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)
@arielb1: 

> Unfortunately, it is rather non-standard, and supporting it for general

I don't know what you mean. It's specified as part of POSIX and the Windows API is compatible with it. Providing a portable API for non-blocking sockets and anonymous pipes is easy. Providing a portable function for waiting on N of these objects is also easy. Adding support for timers and a way to wait on arbitrary events (via a semaphore / condvar-like API) is easy too.