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`.
If you're going to use `Zero::zero()` here you may as well make this a default method implementation on the trait.