(dev/translation#78) I18nSubscriber - Allow partial/negotiated locales
Definitions:
* A fully-supported locale is valid in all localization services (eg
`ts()`, `Civi::format()`, `$dbLocale`).
* A "negotiated" or "mixed" locale can be used for communication, but
it is not fully supported by all other layers. Consequently, it
requires some kind of fallback or substitution.
Before:
* When an API call requests an alternate language (v3's `option.language` or
v4's `setLanguage()`), it only activates fully-supported locales.
* Specifically, it validates against the multilingual configuration -- those
are fully supported locales.) It otherwise ignores the alternate language.
After:
* When an API call requests an alternate language, it cacn activate
fully-supported locales as well as mixed locales.
* Specifically, it asks `Locale::negotiate(...)` to examine the local
configuration/resources and determine the effective locale.