Issue #3619185: Make the API path prefix and the generated plugin IDs configurable
Every resource declared "/api/v1/…" in its annotation, and that literal was also the address, so a site already serving a REST API under that prefix had no way to install this module beside it.
The prefix is now a setting and is applied to the resource plugin definitions while they are built, upstream of the routes core builds from them, of the endpoint locator, of the OpenAPI document and of the pre-routing path check. An annotation says where a resource answers relative to the API, not where the API is.
The generated resources get a plugin ID namespace of their own, and a collision is reported while the definitions are built, naming both claimants: a generated resource whose ID is already held is dropped rather than registered over the resource holding it, which is how an endpoint disappears without a word said about it.
The defaults are the paths and the IDs the module already had, an update hook writes the prefix into the settings of a site that is upgrading, and a test pins both byte for byte.
Closes #3619185