structure: minor rearrangments; parse punctuation into nodes, not merely strings
get rid of dirty/clean parse tree distinctions -- adds boilerplate for little/no benefit

 - fit token parsing in with a second phase which 1) builds a string for the token parsers, and 2) augments the token node with a parse result

planned:

 - remove redundant `sign` from token number parsers
 - fix naming inconsistencies and overlaps
 - expand astbuilder module to mediate the transfer from the new CST to (hopefully unchanged) AST
 - tests
naming: avoid overlaps where same name used to mean different things in different contexts