SIMD vector casts work

Of course, there is no type-checking, so it will crash in LLVM if you do
something stupid, but that is the next thing to fix.

The allowed casts are

 1. T -> <n x T> (where T is float or integer-like)
 2. [T, ..n]* -> <n x T> (where T is float or integer-like)
 3. <n1 x T1> -> <n2 x T2> (where n1 * sizeof(T1) == n2 * sizeof(T2))

and are implemented via

 1. Broadcasting, the value is multiplied n times via shufflevector
 2. Bitcasting to <n x T>*, then loaded
 3. Bitcasting

all other casts involving vectors will be explicitly forbidden in the
future.