Fix #6661. Configurable multiple linters.
Add testcase for non-existance provider.

Test that non-existing provider, preferredOnly = true and firstOnly =
true.
Add test case for when prefer is not specified.

Also, change single-quote to double-quotes for string literals.
First approximation of LanguageLayer in prefs.
Remove dead code.
Some tests and re-work of the implementation.

Layer made state-less, just as PathLayer.
Document/Clean up.
Merge remote-tracking branch 'upstream/master' into kai/fix-6558-language-layer
Address review comments.
Merge remote-tracking branch 'upstream/master' into kai/fix-6558-language-layer
Merge remote-tracking branch 'upstream/master' into kai/fix-6558-language-layer

Conflicts:
	src/document/DocumentManager.js
Merge remote-tracking branch 'upstream/master' into kai/fix-6558-language-layer

Conflicts:
	src/document/DocumentManager.js
Fix language layer after merge.

Also, some fixes to broken document language overrides.
Fix CC annotation in JSDoc.
Make PreferencesBase stateles.

PreferencesManager is made the only owner of the state. PreferencesBase
only stores the default scope order. Exception is made for ProjectScope
(which still holds the project root directory). There are two failing
tests due to rework.
Documentation and clean up.
Fix tests.
Merge remote-tracking branch 'upstream/master' into kai/fix-6558-language-layer
Fix leftover call to _manager.

All tests pass.
Merge remote-tracking branch 'upstream/master' into kai/fix-6558-language-layer

Conflicts:
	src/preferences/PreferencesBase.js
	test/spec/PreferencesBase-test.js