Define __GLASGOW_HASKELL_LLVM__ when using the LLVM back end.

When compiling via LLVM, GHC now defines the CPP symbol __GLASGOW_HASKELL_LLVM__
to the version of LLVM used, e.g., __GLASGOW_HASKELL_LLVM__ is defined to be 30
for LLVM version 3.0.
Add support for LLVM vectors.

This patch adds support for LLVM vectors and vector operations to our internal
LLVM abstract syntax data types.
Tell LLVM that all vector stores and loads are potentially unaligned.
Add Cmm support for representing 128-bit-wide SIMD vectors.
Add a bits128 type to C--.
Always pass vector values on the stack.

Vector values are now always passed on the stack. This isn't particularly
efficient, but it will have to do for now.
Add the Float32X4# primitive type and associated primops.

This patch lays the groundwork needed for primop support for SIMD vectors. In
addition to the groundwork, we add support for the FloatX4# primitive type and
associated primops.

 * Add the FloatX4# primitive type and associated primops.
 * Add CodeGen support for Float vectors.
 * Compile vector operations to LLVM vector operations in the LLVM code
   generator.
 * Make the x86 native backend fail gracefully when encountering vector primops.
 * Only generate primop wrappers for vector primops when using LLVM.
Add the Int32X4# primitive type and associated primops.
Add the DoubleX2# primitive type and associated primops.
Add the Int64X2# primitive type and associated primops.
Add support for passing SSE vectors in registers.

This patch adds support for 6 XMM registers on x86-64 which overlap with the F
and D registers and may hold 128-bit wide SIMD vectors. Because there is not a
good way to attach type information to STG registers, we aggressively bitcast in
the LLVM back-end.
Add a primop attribute llvm_only.

The llvm_only attribute indicates that a primop is only available when using the
LLVM back-end.
Add prefetch primops.
Mimic OldCmm basic block ordering in the LLVM backend.

In OldCmm, the false case of a conditional was a fallthrough. In Cmm,
conditionals have both true and false successors. When we convert Cmm to LLVM,
we now first re-order Cmm blocks so that the false successor of a conditional
occurs next in the list of basic blocks, i.e., it is a fallthrough, just like it
(necessarily) did in OldCmm. Surprisingly, this can make a big performance
difference.