use uint32_t to ensure alignment in union, improve comments
This hopefully clarifies the macros used to handle NANs, INFs, and denormals.
Also, uint32_t is used to ensure that we don't hit any UB in our union on weird archs that I don't know about.