More refactoring: re-worked parser.

I didn't replace the whole thing, but I got rid of the intermediate data
structure. Reduce complexity and increase performance? Yes please!

The big addition here is the type checker. It is overkill given the
current spec, but when composite types land, it's going to be freakin'
sweet.