Clean up some trait impls in core::num.

This removes the special casing for `float`s where it was not necessary, as
`-0.0 == 0.0`.
I agree, if it wasn't a macro I'd use `Zero::zero()`. But it is a macro, which means the magic constant stays in one location in the code.

I'd be happier if you changed it back.