For discussion: Pluggable linting

This moves the lint panel / status bar UI back into core but makes is generic.  Extensions can register linting providers per language, and the core code manages invoking the linter at the right time and presenting the results in the UI.

The panel header and tooltip strings reflect the name of whatever linter is active for the current file.  I split the "disabled" tooltip to discriminate between globally disabled vs. no linter available for a speific filetype.

One nice thing about having all linter extensions headlessly bottleneck though a core API is that it lets us easily add future linting features that most extensions will get "for free."  See the header comment in Linter.js for some ideas.