RFC: IO simplification

This RFC proposes a significant simplification to the I/O stack distributed with
Rust. It proposes to move green threading into an external Cargo package, and
instead weld `std::io` directly to the native threading model.

The `std::io` module will remain completely cross-platform.

[Rendered](https://github.com/aturon/rfcs/blob/io-simplification/active/0000-io-simplification.md)
It's actually impossible to write correct code in many cases without non-blocking sockets and AIO. For example, leaking tasks when an operation blocks is awful and there's no way to do cancellation. It's not possible to write software based on events in Rust today (without writing a new I/O / concurrency library) and it's not ever going to be possible to do it in a simple and concise way without having language support. The desire for a 1.0 release shouldn't be an excuse to provide sub-standard APIs. It's better to do nothing at all and leave it to be solved down the road with generators or async/await than it is to shoehorn a half-baked idea in today.