Attempt at fixing stack alignment in rare callee-save cases

Bug is present when callee save happens and a call takes place.
Callee-save alignment is done with regards to cc1_mstackalign, but not
to the alignment given in the impl_call() code. This means that the
impl_call() code thinks it's 16-byte align even though cc1_mstackalign
is 8, but then callee-save register saving comes along and realigns the
stack to 8 (cc1_mstackalign), messing this up.
Reproduce bad stack alignment
Beginning refactor of the stack allocation logic
Fix __auto_type retaining its attributes
Run decl cleanups (and VLA destructors) in reverse order
Correctly handle struct containing const - assignment is still an error
Remove unnecessary argument to ustrprintf()
Remove loss-of-precision warning from Wextra
Changing function prologue logic to use allocas
Fix x86 idiv with (negative) 4-byte ints
Fix constant division/modulo with negative integers
Fix finding an invalid trigraph sequence
Correct parsing of hex-floating constants like 0x.[0-9]...
Add -Wgnu
Warn on GNU address-of-label
Disable -Wgnu by default
cpp: fix extra "warning:" message for redef
cpp handles -Wall and -Weverything
cpp errors on redefinition of builtins (__TIME__, etc)
cpp handles backslash-newline with spaces between