Create a lexer for Cainteoir Dictionary files.

This change creates a lexer that will parse a Cainteoir dictionary
file (*.dict) into a sequence of tokens and reworks the Cainteoir
dictionary reader.

The motivation for this is two-fold:

  1.  It makes the parser cleaner, as it does not have to explicitly
      deal with things like comments and whitespace;

  2.  It allows the general syntax to be reused in other file
      parsers.