Made sure that memory_order_consume is equivalent to memory_order_acquire on SPARC. Also make signal fences more strict in case of memory_order_consume since the standard requires them to be equivalent to thread fences except for thread synchronization instructions.
Renamed union_cast.hpp -> casts.hpp.
Added support for types with non-trivial default constructors.