start new attempt to build cleaner parser:
 - use new UnParse version, including CST convenience functions
 - get rid of `concrete` module, its functionality is provided by UnParse now
 - try and move all fiddling out of the actual parser
 - keyword vs. unquoted value and when to munch junk remain problems
rewrite parser using new architecture
 - stages
   - tokenization
   - clean up tokens (classify reserved/unquoted, join up lists of characters,
     ditch delimiters)
   - build CST
   - build AST
 - tests:  in progress.  done for first two stages

also separate attempt (probably will be discarded) for a scannerless new version
tidy up token construction, making a public function available to other modules
get parser up and running (+ tests)
note that reserved words take precedence over unquoted values, and fix apparent error in readme
New approach for tracking position during CST parsing:
 - count the number of tokens consumed -- so the parsing state
   is just an integer that's incremented whenever a token is consumed
 - need to upgraded UnParse to get access to the new `Itemizer`
   that implements this version of `item`
 - updates tests accordingly
test error conditions of parser, including token counting
AST: add checks for a couple more error conditions to Loop -- updates tests accordingly
AST builder: update to match new CST definition (+ update tests)
get rid of attempt at scannerless parser
parser error message needs to be more specific
rewrite full parser to put together the 5 steps of parsing:
 1. scanning
 2. ditching whitespace/comments
 3. cleaning up tokens (classifying unquoted, etc.)
 4. CST
 5. AST
parameterize full parser function with some error handlers
get the full parser error handlers tidied up and their tests running and passing
fix example tests
bump version number and add script for cutting pypi releases