Upgrade to LLVM 3.4

Upgrade to latest version of LLVM. This involved adding type
annotations in some places where they weren't needed before but
otherwise hasn't affected anything.
Upgrade cabal version from 1.8 to 1.16
Add basic type declarations

Add type declarations to grammar. Currently, they can only occur
at module scope, they are limited to named types (that is, no
structures, classes, parameterized types, type variables, etc.)
and functions of named types, and they are ignored by all compiler
stages after parsing.