Why?
* Because i18n sucks multi-browser, especially on Chrome.
* What's more, this will allow overlaying "incomplete" locales with
missing strings over the base locale and get a semi-translated one,
which probably is better than nothing.
* Additionally we kinda need that implementation anyway for node-based
tests.
* Also, while not currently implemented, it could allow (hot) reloading
of locales, or loading external ones, which would help translators,
or providing an option to the user to choose a locale.
* And finally, not calling i18n will avoid the "context switch" into
browserland.
Some implementation details:
* Before code can use a locale, it has to be loaded. Sadly sync loading
is not really supported. So `await locale` or `await localize`.
* Background force reloads locales right now, and caches them in
localStorage. Windows will look into localStorage for that cache.
* The locale loader will not verify locales other than some rudimentary
checks. It is assumed that shipped locales where verified before
check-in.