RFC: numerics reform

This RFC is preparation for API stabilization for the `std::num` module.  The goal is to finish the simplification efforts started in [@bjz's reversal of the numerics hierarcy](https://github.com/rust-lang/rust/issues/10387).

Broadly, the proposal is to collapse the remaining numeric hierarchy in `std::num`, and to provide only limited support for generic programming (roughly, only over primitive numeric types that vary based on size).  Traits giving detailed numeric hierarchy can and should be provided separately through the Cargo ecosystem.

Thus, this RFC proposes to flatten or remove most of the traits currently provided by `std::num`, and generally to simplify the module as much as possible in preparation for API stabilization.

[Rendered](https://github.com/aturon/rfcs/blob/num-reform/active/0000-num-reform.md)
These traits aren't necessarily used exclusively for C-like enums, there are cases where you're writing a function that generically handles all signed integers and [you just want to compare to -1](https://github.com/rust-lang/rust/blob/dd7113609c17cc31fee4b54d954e71e01af3bcc9/src/libnative/io/mod.rs#L123-L130), for example.

I don't have a sense for how common it is to want to go from a concrete literal type to a generic literal type, but that's the other main use case for `NumCast` from what I can tell.