refactor(http): enter the module context from the route, not the constructor
A controller is a shared service, so its constructor runs once per process while
the page it builds is answered many times. initModule() lived there, and with it
the default translation domain of the page: every request after the first one in a
process rendered with the domain of whichever controller was constructed last, so
pages came out half translated. AdminControllerContext added the first breadcrumb
of the panel from the same place, with the same result. Under FPM the process ends
with the request and none of this shows; RequestIsolationTest has been red on it.
The setup a page needs because of where it lives now belongs to the request cycle:
* every route a module declares is stamped with that module, taken from the path
of the file declaring it (RouteCollectorFactory -> RouteCollection::setModule()
-> Route::MODULE_ATTRIBUTE), and the matcher reports it apart from the action
parameters;
* the kernel enters ModuleContext for the matched route before anything renders,
so a guard rejecting the request answers in the right language too;
* AdminAreaContext (the panel domain and its first breadcrumb) is entered by the
access guards of the panel. The two routes declared outside them keep working:
the login screen needs only the domain of its own module, and the system check
enters the area itself.
ControllerContext and AdminControllerContext are deleted along with all 214 calls
to initModule(). Six news controllers built breadcrumbs in their constructors —
those moved into the actions. ControllerConstructorTest keeps the rule: a
controller constructor declares dependencies and calls none of them.
The .pot files carry no new messages; their source references moved with the code.