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)
@thestinger  To be clear, the scheduler API here is just exposing a small API for blocking and waking threads akin to park/unpark in java.util.concurrent, and a simplification of our current `Runtime` trait. As explained in the RFC, the intended use case is for building concurrent abstractions within Rust that have blocking operations, e.g. channels. These need a mechanism for blocking/waking, and there's little reason to tie that API to a particular scheduler.

Even setting green threads aside, this is a reasonable style of API for writing blocking concurrency abstractions, as illustrated by the very successful java.util.concurrent library. It also seems very simple (assuming the sketched version works out) and not terribly abstract.

Is there a specific alternative design you have in mind?