Add support for -mavx and -mavx=2 flags.
Add Cmm support for 256-bit-wide values.
Add support for 256-bit-wide vectors.
Add DoubleX4# and associated primops.
Set LLVM option -stack-alignment=32 when compiling AVX instructions.
Fixup stack spills when generating AVX instructions.

LLVM uses aligned AVX moves to spill values onto the stack, which requires
32-bye aligned stacks. Since the stack in only 16-byte aligned, LLVM inserts
extra instructions that munge the stack pointer. This is very very bad for the
GHC calling convention, so we tell LLVM to assume the stack is 32-byte
aligned. This patch rewrites the spill instructions that LLVM generates so they
do not require an aligned stack.