Make `Coalescer` operate on `EntityFieldBasedPropExpressionInterface` objects instead of lists of strings
> **Follow-up of** [!1112](https://git.drupalcode.org/project/canvas/-/merge_requests/1112) — see the "Optional follow-up tightening" list in [note 1200411](https://git.drupalcode.org/project/canvas/-/merge_requests/1112#note_1200411).
### Overview
`Coalescer` currently returns lists of strings throughout. It would be easier to maintain, debug, and understand if it operated on `EntityFieldBasedPropExpressionInterface` objects instead, converting to a list of strings only at the boundary where strings are actually needed. That conversion is trivial.
This was deliberately left out of scope for !1112: keeping the string-based representation until an object-based one is actually needed avoided extra churn.
### Proposed resolution
Refactor `Coalescer` to carry `EntityFieldBasedPropExpressionInterface` objects internally and convert to strings only at the point of use.
### Remaining tasks
- Change `Coalescer`'s internal representation to objects.
- Convert to strings only where consumers require them.
issue