initial commit
NVVM data layout
llvm type generation
begin basic code generation
wibble
ignore cabal 'dist' directory
add ghci script
change codegen monad

Now two records: one to hold all code generation state as it walks the AST, and another for each of the basic blocks generated during the walk.
tidy up llvmOfIntegralType
add many primitive operations
Have ghci script use the local cabal sandbox
Add primitive functions calls to codegen
Bug fix generating the LLVM type for integrals
cabal: add missing files
add helper class for generating LLVM types
further modify code generation monad

This is now split into a monad stack. The basic code generation state for expressions is much the same, but now runs over an outer monad that keeps track of external declarations that need to be added when defining the module.

Also update Arithmetic.hs so that the standard C library functions are called instead of the llvm.* intrinsics. Add function attributes ReadNone and NoUnwind to these calls as well.
codegen: let bindings

Add code generation support for scalar let bindings
codegen: add support for scalar conditionals

Add code generation support for the scalar conditional (?) operation. This
generates new basic blocks for the then/else branch and merges the two via a phi
node. Thus, we don't use the select instruction explicitly (although the
optimiser often simplifies to using select instead).
codegen fix for scalar tuple projection
code generation for scalar loops (value recursion)