C compiler

A backend has been added to clang to support the MOS instruction set. This backend may be targeted by adding the flag  to clang.

The compiler is a freestanding implementation of the C99 standard, with a couple caveats. The biggest is that it isn't finished yet! Code generation is broken, both in terms of what compiles and in terms of whether or not the results actually work. Development is ongoing though, and test cases are moving from failed to passing at a considerable clip!

Even for the initial release, there'll still be some caveats:
 * While this is a freestanding implementation, we'll also provide a few support libraries; mostly just those needed to get LLVM's end-to-end test suite passing. This includes printf, sprintf, and alloca.
 * While the float and double data types will be legal, any operations performed on them will emit calls to soft float routines that are not provided with the compiler. We'll eventually ship a working IEEE 754 soft float library with the compiler for completeness' sake, but we expect low demand for this, and it'll distract from the rest of the project. In the mean time, because the libcall names are fairly standard, it should be possible for users to develop their own implementation if they see fit.
 * The (default) included printf will not be compiled with floating point support, even when we ship soft float libraries. We'll find some way to link in a different version if users elect to link the soft float routines.