Language switcher: connect to prefs & clean up some code

Second commit - new feature:
* Add "Set as Default" menu item* to status bar language switcher -- adds a permanent file extension mapping to preferences, based on the current file's path-specific language override (if any) and its file extension.

First commit - cleanups:
* Make LanguageManager the official public API that is used to set per-file overrides, rather than proxying through Document objects - remove `Document.setLanguageOverride()`
* Clear path overrides when switching projects, so it's more obvious that it's not something that gets persisted across sessions
* Simplify how JS Code Hints listen for language updates: remove dependency on `"currentDocumentLanguageChanged"` event; remove unneeded extra 'if' tests

\* For clarity, I'd ideally like the "Set as Default" menu item to be grayed out when there is no path-specific override on the current file (i.e., when the current language already _is_ the default for the current filetype)... but disabled items aren't a think in DropdownButton yet and I will need to do some cleanup there to get it working -- so I wanted to post this initial for review first.
Removing the second check here is what allows up to remove the `"currentDocumentLanguageChanged"` listener further below, since this code now covers that case too.