Alter lexer type to take a label type parameter

Allow lexer states to be labeled by an arbitrary type.
Minor refactor of grapher code
Fix bug in e-NFA construction
Clean up and comment type decls
Loosen up cabal deps restrictions somewhat

Necessary to get cabal build working again