Made OrderedFloat and NotNaN generic for any type with the Float trait

I made OrderedFloat and NotNaN work for any time with the Float trait. Mostly so I could use them with f32's.

I haven't written much Rust yet so if this is dumb please tell me :)
I'm I especially feel like the tests could be made less repetitive somehow.