Binary instances for NaN and negative zero are broken

Roundtripping `(decode . encode)` NaN yields -∞ for both Float and Double and roundtripping negative zero gives oridinary zero. 

This pull request only add tests for transfinite floating point values and does nothing to address issue. It's unclear to me whether it's possible to fix this without breaking encoding format in backward incompatible way.