Use a named structure for the current token in tokenizer.
Complete re-write of the parser to use the streaming tokenizer.

Currently 2 unit tests are failing:
 - malformed_decimal
 - malformed_decimal_collect_all

...but I'm not sure this isn't the behavior you actually want.
Creates the parse_option complete_parse to check that input is fully read.