Coalescer drops multi-bundle reference picks when the reference field also has a direct leaf pick
### Overview
A code component with a `content-entity-reference` prop cannot be published when its entity-field picks descend through a **multi-target-bundle** reference field *and* also read a **direct property** of that field (for example `target_id` or the reference `url`). Publishing fails with:
> Multiple expressions on the same field 'entity:node:news_item.field_related' must be coalesced into a single FieldObjectPropsExpression.
`Coalescer::coalesce()` is supposed to merge every pick on one field item into a single `FieldObjectPropsExpression`, but in this combination it leaves the picks un-coalesced, so the save-time `EntityFieldExpressionsSameFieldMustBeCoalesced` guard rejects them.
The Coalescer has two paths for references on a field: a *leaf-property folding* path (added in [#3585354], single-target-bundle only) and a *bundle-specific branch* path (added in [#3591829]). They are mutually exclusive: the branch path only runs for references whose field has no direct leaf picks. As soon as a direct leaf pick (`target_id`, `url`, …) exists on the same field, the references take the older folding path, which is not branch-aware — so cross-bundle picks sharing a developer-facing key (e.g. `title` from two bundles, both keyed `label`) collide instead of merging into a branch, and the whole group passes through un-coalesced.
This is an incomplete case from [#3591829] (MR !1376): that work added branch coalescing but only wired it into one of the two reference paths, and no test covered a reference field with both a direct leaf pick and cross-bundle descent picks.
### Steps to reproduce
1. Add a `content-entity-reference` prop to a code component, targeting an entity-reference field that points at **more than one bundle** (e.g. a `field_related` on `news_item` targeting `news_item` + `blog_post`).
2. In the field picker, select a **direct property** of that reference field (e.g. the referenced entity's id) **and** a field on **each** target bundle (e.g. the title on both bundles).
3. Publish the code component.
4. Publishing fails with the "must be coalesced into a single FieldObjectPropsExpression" error.
Minimal expression-level reproduction (one `field_related` leaf pick + two same-key cross-bundle picks):
```
ℹ︎␜entity:node:news_item␝field_related␞␟target_id
ℹ︎␜entity:node:news_item␝field_related␞␟entity␜␜entity:node:blog_post␝title␞␟value
ℹ︎␜entity:node:news_item␝field_related␞␟entity␜␜entity:node:news_item␝title␞␟value
```
Expected: one `FieldObjectPropsExpression` on `field_related` whose `label` entry is a bundle-specific branch and whose `target_id` is a plain leaf. Actual: the three expressions pass through unchanged.
### Proposed resolution
Make the two reference paths compose: route **all** references on a field through the branch-aware combining logic, then fold that result into the field's direct leaf picks so the whole field becomes one object. A bare multi-bundle branch reference must also be nameable as a follow-reference (`↝`) object entry (its final target is per-bundle, so a representative branch supplies the developer-facing key).
### Remaining tasks
- Unify the leaf-property folding and bundle-specific branch paths in `Coalescer`.
- Add `CoalescerTest` coverage for a reference field with a direct leaf pick alongside cross-bundle descent picks (both the "one field per bundle" and "multiple fields per bundle" shapes).
### User interface changes
None. The picker already allows these selections; this only fixes what happens when they are saved.
### API changes
None. Internal prop-expression coalescing only.
issue