Fix #6661. Configurable multiple linters.

Something I started at the hackathon and finished offline.

This PR fixes #6661. It introduces an option to control execution of linters through a configuration file. It uses `LanguageLayer` implemented in #7889 (#7889 should be merged first). No UI impact.

For any given language `languageID`, the following set of options can be defined:

```
"language": {
    "languageID": {
        "linting.prefer": (comma-separated-list-of-linters),
        "linting.preferredOnly": (boolean)
    }
}
```
`linting.prefer` is the list of code inspection providers (does not matter whether they are installed or not, does not matter if it is complete or not). if `preferredOnly` is specified, then only providers from `prefer` list will be used (those which are installed, of course). `preferredOnly` will have no effect if `prefer` is not specified. Test cases are provided which are probably the best documentation.

One could think of `prefer` as "the list of providers I would like to see first" and `usePreferredOnly` as of "I would only like to see the providers I prefer".

For example, the following configuration is used in this PR for Brackets:
```
"language": {
    "javascript": {
        "linting.prefer": "JSLint, JSHint",
        "linting.preferredOnly": true
    }
}
```
Which would enable both `JSLint` and `JSHint` (they will be used in that order).

- [x] remove JSLint override on a JS provider registration
- [x] merge when Async linting lands in master
- [x] change brackets' own .brackets.json to always prefer JSLint

See #6661, #6662 

CC: @dangoor, @peterflynn, @ingorichter