RFC: io and os reform

This RFC proposes a significant redesign of the `std::io` and `std::os` modules
in preparation for API stabilization. The specific problems addressed by the
redesign are given in the Problems section below, and the key ideas of the
design are given in Vision for IO.

[Rendered](https://github.com/aturon/rfcs/blob/io-os-reform/text/0000-io-os-reform.md)
I think the only useful value of "num_cpus" should mean "how many threads should I create initially to fully utilize the CPU when running a long-term parallel program that doesn't dynamically handle CPU hotplugging".

Which in practice means the maximum possible number of hardware threads in any possible configuration produced by CPU hotplugging (of course, almost all systems don't support hardware CPU hotplugging, so this is just the number of physical threads).

APIs for more fine-grained information should probably be provided in a separate crate, since they are of very niche use and are much more complex (look at /sys/devices/system/cpu/cpu0/topology and similar on a Linux system).