Start work on error recovery

- In runtime, make parse errors part of the parse tree
- Add error state to lexers in which they can accept any token
Put definition of EOF symbol back in parse table builder (not in parser.h)
Fix bug in parser error handling
Backfill unit tests for follow sets

Also, add some comment docs for some compiler functions
Add basic support for error recovery
Move some general code generation helpers into their own file