Avoid recognizing explicit keywords in lexer

The `identifier` rule can also be used to recognize keywords, and by
determining if the recognized word is an identifier, we significantly
reduce the number of states that the lexer generator must create.
Added note about simplifying tokenizer