Fix alignment of vararg buffer allocas.

Since we do 8-byte loads for va_arg of double, make sure the vararg buffer
alloca is 8-byte aligned.
Optimize out code and variables for no-op pointer casts.
Switch to 16-byte stack alignment.

When we support 16-byte SIMD types, it will be nice to be able to store them
on the stack aligned without dynamic stack pointer realignment.