Fix a few bugs:
 - Reject empty tokens.
 - Accept literals at the very end of the data.
 - Don't lex empty identifiers.
Add ParseString()