[450448] Add lexical and semantical syntax coloring support.

- Refactored grammar to differentiate different ID tokens (string, quoted string, and numeral; html-style ids not yet supported)
- Added lexical syntax coloring support that highlights lexer tokens properly (and ensures CompassPt values are not handled as keywords)
- Added semantical syntax coloring support, so syntax coloring can be changed via preferences.