Issue/api syntax

Creates APIs for the syntax support:
- common code for the syntax highlighting preference pages
- API for the Scala tokenizer/partitioner
Ouch. Ow. That's gonna hurt on merge.