[REVIEW ONLY] Fix #6661. Configurable multiple linters.

Something I started at the hackathon and finished offline.

This PR introduces an option to control execution of linters through a configuration file. No UI impact.

For any given language `lang`, if the following option is defined:

```
"linting.provider.lang": {
    "prefer": (comma-separated-list-of-linters),
    "firstOnly": (boolean),
    "preferredOnly": (boolean)
}
```
then it will be used to manage linters for `lang` language. For example, if both JSLint and JSHint (or any other) are installed, then the following will enable JSLint:

```
"linting.provider.javascript": {
    "prefer": "JSLint",
    "preferredOnly": true 
}
```
Test cases are provided which are probably the best documentation. This not yet complete, but open for discussion.

- [ ] remove JSLint override on a JS provider registration
- [ ] merge when Async linting lands in master

See #6661, #6662 

CC: @dangoor, @peterflynn, @ingorichter