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)
A couple of notes:

* Barriers are just one example synchronizer, but even there [OS support is not uniform](http://stackoverflow.com/questions/8920803/pthread-and-gcc-compiling-issue-on-os-x). But more generally, it should be possible to use Rust to efficiently implement other synchronizers such as channels, collections with blocking operations, phasers, group locks, futures, etc. (j.u.c provides probably the widest array of such scalable abstractions)

* Native condition variables would also be exposed as part of the effort of this RFC. More generally, we want to be able to expose more of the underlying system than we currently do, albeit in a safe and cross-platform interface wherever possible.

* You can think of the scheduler park/unpark abstraction as tying a re-usable condvar to each thread, but it's possible to implement it in a lower way using e.g. consumable events in Win32 or futexes on Linux. See [this paper](http://gee.cs.oswego.edu/dl/papers/aqs.pdf) for details on the introduction of a similar API in java.util.concurrent, and for rationale and examples of real-world userspace synchronization. Using the lighter-weight park/unpark primitives has advantages in the native threading world, and the sketched API just exposes them in a simple, cross-platform way.