split off astdata and maybeerror: new standalone modules
redesign and reimplementation of tokenizer:

 - part 1 of total reimplementation of parser, splitting modules into data and functionality portions

 - tokens:  token definitions; throws exceptions if contract violated

 - tokenizer:  converts string to tokens, *returns* errors if input is bad

also:

 - MaybeError module + unit tests

 - work on consistency
clarify tokens interface and test
clarify Tokenizer interface
ParseTree: module containing data definitions of parse tree node types; tests
parser combinators:  remove Result, depending on MaybeError instead.  update tests
refactor Parser, clarify interface, and tests
rough start at defining an AST data module + tests
throw more informative exceptions -- the information in thrown objects should follow a contract
update Todos
fix undeclared variable
fix parser bug:  have special form require symbol as operator
parsetree object literal:  change interface to accept array of key-value pairs instead of a table -- move the semantics to a later stage
start writing and testing astbuilder module -- possible dead-end due to unnecessarily complicated code
get rid of parsetree and astbuilder modules:  handle ast construction in the parser
revamp parser according to new grammar; untested still
get parser and tests partially up and running
parser unit tests including error conditions
fix tokenizer bug:  not correctly passing position metadata to tokens
consistency and ease of use:  change all `set!`s and `setBang`s to just `set`s