Multi color

Implements flexible mark types and mark-type color settings.

Global color settings may be defined under 'colors'; linter-specific colors may be defined in a 'colors' setting under a given linter. Internally the main driver is that marks are now scoped by linter (i.e., 'annotations.warning' or 'pylint.error') and then the complexity is reduced from left to right in search of the nearest reasonable setting. 

Previously the rules for mark priority were pretty simple. I've also introduced a 'precedence' setting which is a list of scopes from most to least important. If the precedence setting is insufficient for resolving a conflict, precedence is granted to the first mark made.

This changeset was larger and touched a lot more of the code than I was expecting; I don't imagine this will go through clean on the first try, so I'll be looking forward to your thoughts.