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)
As explained by [this comment](https://github.com/rust-lang/rfcs/pull/517#issuecomment-66868363), the movement into `os::platform` is only a temporary regression. Once time has been taken to properly implement the cross-platform abstraction it can be re-promoted to `std::io`.

Note that for this specifically unix domain sockets and named pipes on windows are pretty radically different in how they operate. Named pipes can emulate unix domain sockets somewhat, but the actual API and architecture is much different. We would like to expose all these low-level details of the windows API (plus some of the unix API) in the `os::platform` module and then over time if there's a clear cross-platform abstraction we can promote it to `std::io`.