Add token-based TDL lexer.
Add token-based TDL lexer.

This lexer relies on the group identifiers of a regular expression,
and it has support for multiline patterns (comments and docstrings),
which are parsed separately from the regex (the regex then picks up
where the special parser stops). Yielded tokens include the group
identifier of the current and next tokens (helping with lookahead in
parsing), the token text, and its line number.

Addresses #167 and #168

delph-in/pydelphin,goodmami/pydelphin