Issue #3620359: Move the vocabulary listings onto the shape library
First slice of the move: the three listings that answer with a flat vocabulary - messengers, branches and badges - carried three byte-identical copies of the same twenty lines. They now render each term through the engine by one structure.
The structures live in MyrestCoreStructures, a plain class of static methods. It is what becomes config/install when structures become configuration entities, so the resources do not move twice.
MyrestResourceBase gains translated() and renderList(): a listing is N entities described by one structure, and the loop belongs to the resource rather than to the engine, whose business is one entity and what hangs off it.
The alias shape gains a "language" setting, and it is not a convenience. Measured on the development site, building the address in the language of the entity instead of the language that was asked for changed 16 of 20 terms on the second language - every term with no translation into it. These endpoints have always answered such a term with an address inside the requested language, and the responses must stay identical.
The entity_key shape no longer trims the label, for the same reason: the old key was not trimmed.
Closes #3620359