Changed pat -> exp in grammar

Grammar no longer distinguishes between pattern expressions and ordinary
expressions. Added productions to aexp for underscore pattern, at pattern,
tilde (irrefutable) pattern. Changed all references to pattern productions from
higher-up productions into the corresponding exp productions.
Changed var -> qvar everywhere in grammar

Removed ambiguity between var and qvar in subexpressions. Parser can't tell
whether to package something as a var or a qvar without infinite lookahead.
Removed redundant fexp production

Since we added aexplist to deal with exp<->pat change, fexp (which
is *identical* to an aexplist in its contents) is unnecessary.
Removed funlhs production

Now that pat<->exp indistinguishable, cannot tell the left-hand side of
a function declaration from any other sort of left hand side without infinite
lookahead. So replace funlhs with infixexp everywhere.

Note that infixexp can produce an aexplist so this still covers the productions
we need for function left hand sides (qvar apatlist, etc.)
Added generated grammar file (no conflicts)

Also added logfile in case of future grammar bugs.

Hopefully ocaml won't gag on a 50000 line match statement.
Moved state and action types to types.ml

Needed in too many places, messy circular dependencies.
Added error cases and includes to computed file
Moved exception types to types file
Rewrote generated action/goto tables

Uses an explicit map now rather than an enormous pattern match (pattern match
was causing ocaml compiler to crap out). Hopefully converting the explicit
association list to a map at runtime won't be too slow.
Fixed small typos
Removed unused funs from functor interface
Parser compiles now, no semantic actions

Time to test it and watch it fail
Fixed up parsing error handling
Changed lexeme printing slightly
Fixed up parsing test cases

Each file is a separate test case, so ounit prints errors better.
Fixed problems in grammar

Contexts now parsed as types. This prevents shifting to read a context instead
of reducing to (part of) a gtycon on encountering things like
main :: IO ()

Also, fixed up type parsing so can have multiple arrowheads (->) in a type
declaration (not sure how I screwed that up)
Removed enormous log file

Why was I even storing this in git in the first place?
Removed unused nts / productions from grammar

Without context, don't need classlist, class, or atypelist
Changed augmented grammar to match grammar

Still craps out at runtime
Fixed bug in implicit layout algo

No longer adds implicit ; after implicit { at start of file