This change makes it possible to implement custom token types, which is
really useful when building specialized grammars that use non-standard
token types.
This patch makes `HTMLOutputFormat` correctly escape all < and > characters
that occur in source code. Otherwise, a web browser rendering the resulting
HTML will interpret those characters as tags.