Issue #3620117: Add the MyrestFieldShape plugin type
A shape is one way of putting a field into a response: an entity, a field and a choice of shape produce a fragment of JSON. Making that a plugin is what lets the mapping be written down in the model instead of branching inside a helper, four times over across the forks.
The empty-value contract is decided once, in the base class, and build() is final there: a field the entity does not carry, a field with nothing in it and a property whose source is not a field all answer with an absent result, and the engine leaves the key out of the response. Cache metadata travels inside the result rather than around it, so what a shape reached for - an image style, a referenced entity, a text format - reaches the response.
An empty field_types declaration means the shape is not selected by field type at all, not that it serves any of them: a shape meant to answer for anything is the planner's fallback, which is a decision rather than a wildcard every listing would have to filter back out.
Discovery is by attribute only, which raises the core requirement to 10.3 in the info files and in composer.json. In the same move the summary of drush myrest:scan stops calling its metric "shaped": the word now means a plugin, and the counts are with_settings and without_settings.
Closes #3620117