Refactor fromUnlambda

 - Move to NYHC.IR.Unlambda
 - Rename to toCore
 - Rename *' and *'' functions to have more descriptive names
Export Expr constructors from Unlambda
Move compilation from Core to GCode to NYHC.IR.Core
Implement a compiler monad, providing state and error handling
Rename the Compiler monad to Stateful, and introduce a separate Compiler monad specialised on the error type
Implement a unique name generator
Port Core -> GCode compiler to the monad, properly handling errors.
Make toCore monadic: still has some unhandled errors, but they're going to go away soon
Fix some typos
Introduce an Env type for name maps
Replace the IsRec data type with a synonym for Bool to eliminate pattern matching on it
Derive Read and Show for all AST types
Fix a comment
Update cabal other-modules
Actually, that `compiler` function is probably useless.
Merge pull request #7 from Barrucadu/refactor

Refactor