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 
I'm still not sure why the new context gets created with the currentLanguageId