Build: Support compilers with union aliasing problems. There are apparently compilers that don't understand that the fields in unions overlap, and overcache overwritten fieldvalues. Also restores support for compilers without support for static union init.