Add a prototype for zero-cost exception handling

The way this works is: each call site uses an invoke, which can branch
to a landingpad in the case of an exception. The landingpad has a
personality function, which determines whether the unwinder should stop
at that landingpad while unwinding a given exception. This personality
function parses some debugging data generated by LLVM in order to check
the types of exceptions that the current landingpad supports against the
actual exception object's type. This debugging data may be target
specific, which means the personality function must also be target
specific. So far, the only personality function is the one for x86, and
it has only been tested on x86_64.

Some relevant links detailing the implementation of this are:
http://llvm.org/docs/ExceptionHandling.html
http://mentorembedded.github.com/cxx-abi/abi-eh.html
http://mentorembedded.github.com/cxx-abi/exceptions.pdf
Add the start of exception handling: landing pads

This just adds the infrastructure necessary to handle exceptions to the
code generator. Custom exceptions cannot yet be thrown or caught.
Fix tuple type conversions
Don't just continue if we run out of memory: abort

This may be changed to an error-throwing implementation later on. In
order to do that, an emergency heap and a backup allocator need to be
written in order to create the exception and store the whole stack trace
inside it.
For now, it just prints a message to stderr, and aborts.
Add CastError, and throw it if a cast fails

This also adds Throwable and Error, which are core parts of the
exception handling hierarchy. Exception will be added once it can be
thrown.

Another addition is a function which is called by the runtime whenever
an uncaught exception is encountered:
Throwable::printUncaughtException()
This function is a native upcall which prints the exception, and is
called from the exception handling runtime at
plinth-lib/core/c/exceptions.c