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)
> I could be wrong, but I think that shallow generators could be implemented today in terms of the existing semantics (with some unsafe code).

I'm assuming you mean like a function that crawls up stack pointers to copy the stack frame to the heap and manually pop the frame. I'm not positive, but this sounds hard to do, at least portably. You'd have to worry about different stack layouts, and also things like preventing `yield`'s callers from being inlined. But anyway it might be possible to build a hacky version (nonportable and only usable when building without optimizations, for example) just to experiment with and get a feeling for the programming model.