Parameterize AST nodes.
Monstrous jankety commit; symbol table creation.

All instance declarations are now located in Types.hs, which makes
type stuff far (far) easier. The important stuff is the creation of the
symbol table, which is done by recursively walking down the AST while
maintaining the state of the table as things are added to it.

This might have been nice with a state monad; whatever.
Hlint all the things (again).
Fix the GHC warnings I care about.
Fix top-level symbol table containing local vars.
Make hlint happy again.
Add signature for parseBPL.
Finish typechecking.
Correctly parse and typecheck pointers.

Previously all pointer derefences and address expressions needed to be
on a plain variable (i.e., not the return of a function call or array
reference).