I was thinking that `PreferencesManager` will glue `DocumentManager` to the `LanguageLayer`. `PreferencesManager` stands as the integration point. `PreferencesSystem` would not need to know about languages.

Imagine that the `LanguageLayer` doesn't exist in PreferencesBase.js and is instead more conceptually separate. That's what I had in mind originally, it was just in the same file for convenience, but I wanted things like `LanguageLayer` to be possible to create independent of the `PreferencesSystem`.

I like the idea of a `contextChanged` event or something of that sort.