Provide alignment macros and use them.

The syntax for declaring aligned variables differs by platform.
Furthermore, the existing use of aligned variableson the stack is
 unreliable (on x86-32 gcc can and will ignore alignment requests
 larger than 8 bytes).
This provides macros for requesting alignment in declarations and
 moves the stack declarations in the generic platform-independent
 code into structures where we can actually guarantee alignment.