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 
now thinking about it a little bit more: I think it's quite alright. from the point of view of `PrefrencesManager`'s state, the only thing that changes on `_setCurrentFile` is the filename. It does not have to be aware of its semantics. In a way, it relies on the rest of the subsystems to keep its state semantically correct. One could argue that the entire context should (or could) be set at once, but it does not really change much (potentially it's a little overhead on property change notification).