compiler: Track macro expansions in SourceLocated

This allows us to trace errors in expanded macros all the way to the
original expansion. This allows for clearer error messages and may
provide assistance in generating debug info in the future
compiler: Add IntermediateValue.typeDescription

This is a short string describing the type of the intermediate value.
This has a few immediate advantages:

- We can factor out a very repetitive error message in to a
  BoxedOnlyValue trait

- ValueNotApplicableException and record type conversions can describe
  the value's incompatible type on error
compiler: Rename __llambda_{exec => top_level}

__llambda_exec actually just consists of all the top-level expressions
in a Llambda program. It is otherwise a normal procedure. Rename to
clarify its meaning in backtraces etc.
compiler: Rename PlannedFunction.*{Option => Opt}

This is consistent with the style elsewhere in the compiler
compiler: Define (features) as a report procedure

This makes no difference currently but it allows future optimisations to
correctly identify it. It also allows a hack in our unit tests to allow
(features) to be unlocated.
compiler: Introduce SourceSubprogram

This replaces some manual location tracking we were doing on
PlannedFunction with a separate SourceProcedure object. This will later
be used to tag inlined expressions and plan steps with their original
source procedure and to identify top-level expressions as belonging to
particular files.
compiler: Add basic debug info when -g is passed

This has no functionality at the moment. It just emits basic
module-level metadata
llvmir: Add support for location metadata

This is the entry point for line number debugging information
llvmir; Add support for subprogram metadata
llvmir: Support file context, subroutine metadata

This should complete the support required for line numbering debug info.
compiler: Trivial line-based debug info

This emits enough debug information to allow GDB to resolve line numbers
in some situatins. The emitted information is complete and there's no
attempt to handle inlining or macros at all. It also requires compiling
the .ll file by hand on OS X to preserve the .o file - compiled Mach-O
executables don't contain debug information.
compiler: Add --save-temp-obj flag

This is required on Mac OS X to properly use debugging information as
the final Mach-O executable doesn't contain DWARF information
compiler: Emit a list of all subprograms

Not sure what this is used for but it's part of the LLVM debug info spec
compiler: Associate subprograms with functions

This populates the LLVM function for every subprogram we emit that
corresponds to a native function.
compiler: Make planner work with ContextLocateds

SourceLocated should work the same as the actual instance type of the
located is checked in assignLocation{From,To}. However, this makes it
clear and type safe that we intend to work with ContextLocated
instances.
compiler: Properly locate invokes

DisposeValues was creating a new ps.Invoke step without preserving the
location from the old one. Fix so we generate better debug info.