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`.
Remove ancient GC cfg flags
auto merge of #15900 : tbu-/rust/pr_numcleanup, r=kballard

This removes the special casing for `float`s where it was not necessary, as
`-0.0 == 0.0`.
auto merge of #15910 : sfackler/rust/nogc, r=cmr
Support using custom sockets within the runtime.

This is akin to supporting custom file descriptors, but for sockets. This
allows for the implementation of raw sockets in an external library, as well as
integration with other libraries that use sockets such as zeromq.