MMIX: Add a dummy backend

This commit adds the boilerplate code needed to get the new MMIX
backend to *compile*.  The backend itself can *not* actually compile
anything yet.
MMIX: Implement lowering for empty functions

This commit implements a very basic form of formal argument
and return value lowering.  It is enough to allow the following
empty function to compile without crashing llc:

  define void @foo() {
  entry:
    ret void
  }

The instruction printer still needs to be updated to produce
the correct instructions.
MMIX: Add basic assembly code printing

This commit adds support for printing the assembly code
of very basic inputs.  Namely the empty function now
compiles to:

  foo:                                    # @foo
  # BB#0:                                 # %entry
	  POP 0, 0
MMIX: Implement basic argument and return lowering

This commit implements basic support for lowering function
arguments and return values.  You can't do much inside the
function body at this point other than return values.  For
example:

   define i8 @select2_i8(i8 %a, i8 %b) {
     ret i8 %b
   }
MMIX: Implement support for immediate values
MMIX: Implement function call support.
Update to work with mainline LLVM changes.
Update streamer API use

In particular, `EmitInstruction' has been replaced:

  s/OutStreamer.EmitInstruction(Inst)/EmitToStreamer(OutStreamer, Inst)/
Minimize the target data layout string.

Since the DataLayout implemention will fill in the default alignments
for you, there is no reason to explicitly mention them.