Extensible semantic highlighting

Includes mechanism for basic Scala AST based highlighting and Scalariform
AST based one.

Fixes #1001989