Safely cast a value of a type to another, if both have the same size.
Unlike bruteCast, the same location si not shared between the
source and the target and no pointer is used.
This function is inspired by http://www.forwardscattering.org/post/27
1 assert(bitCast!int(1.0f) == 0x3f800000);
3 assert(bitCast!(ubyte)(ushort(0x1234)) == [0x34, 0x12]);
5 assert(bitCast!(ubyte)(ushort(0x1234)) == [0x12, 0x34]);