Fix #6558. Resurrect language layer

This fixes #6558.

LanguageLayer allows specifying language-specific prefs in the following manner:

```json
{
    "spaceUnits": 4,
    "language": {
        "html": {
            "spaceUnits": 2
        }
    }
}
```

Language layers are added to `user` and `project` scopes. Path layer will take precedence over language layer.

LanguageLayers could be used by #7362. Related to PR #6409 (which creates a special event to inform language changes) and should be taken into account by whichever lands last.

CC: @dangoor 
oops, missed this. actually, it is misleading. because this only signals file change. language change is signaled in a different place (_setCurrentLanguage, later). I can fix it to use `_buildContext(filename)`, omitting language (because it does not matter). Would that be clearer?