Issue #3620028: Give the scanner a fixture model and assert the map against it
The scanner cannot be tested against any of the sites this project is built for. None of them has an exported configuration, and a database dump is not a fixture: it cannot be committed, cannot be rebuilt by someone else and cannot run in a pipeline. So the model is written down instead, as the configuration of a test module, and the map is asserted against it key by key rather than for being non-empty. A wrong map is the hardest defect here to notice, because what it produces downstream is plausible-looking generated code.
The model is deliberately awkward, and each awkwardness is a case that is easy to get wrong. A bundle with nothing configured on it, which is still a bundle and still carries the fields its entity type ships. A reference restricted to one bundle beside one restricted to none - not the same as pointing at nothing. Every field type the shape table knows, at both cardinalities, required and optional. A vocabulary three levels deep and one nobody has put a term in, where the depth is 0 rather than 1. Two bundles pointing at each other, so the graph has a cycle to find and the nesting depth is unbounded. A second language, which the map says nothing about on purpose, and that is asserted too.
The fixture is a module rather than a helper in one test because every later stage reads the same model: a generator and a change queue need to be run against something whose every field is known, and this is it.
Closes #3620028