Wrote interface for parser generator

Types for grammar productions and semantic actions.
Added new token types for unqualified vars

Modified lexer to correctly output these tokens.

Parser needs to be able to pick out (specifically) unqualified varids, eg for
left hand sides of declarations.
Wrote out all the nonterminals for grammar

Writing the actual grammar is going to be such a pain.
Working on parser interface
Fixed small bug with token types

Added VarId, ConId, VarSym, ConSym
Wrote a bunch of basic test cases

Tests correct tokenizing of some basic input lines. Haven't tested
comments, escape sequences, or whitespace layout
Added EOF token to lexer

For benefit of parser. Sticks it on end of queue.
Fixed a couple introduced lexer bugs
Working on LR(1) parser generator

This is harder than it looks
Fixed tiny things in dummy code

So stuff compiles
Implemented computation of FIRST sets

Unfortunately, code will totally crap out (infinite loop) if grammar is left
recursive, and doesn't check for that ahead of time.

Also, added even more functions to parser generator interface.
Added a bunch of explanatory comments

Now actually talks about how the parser generator subroutines work
assuming you don't have a compilers textbook memorized.
Added new field to CC record

Keeps track of how many itemsets are in the collection.
Wrote code to build CC

Uses closure and goto subroutines.
Refactored CC building code

Moved closure and goto into separate functions, Fixed a couple compiler bugs.
Added helper function in utility file
Fixed bugs introduced by previous refactoring
Fixed a bunch of compilation errors

CC builder now compiles. Untested.
Wrote code to generate ACTION / GOTO tables
Fixed more compilation errors