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)
> So why do you want this API to be declared portable then? On Windows it would be at best useless (if it returns errors) and at worst dangerous (if it doesn't).

It's no more "dangerous" than it is on \*nix, as I already explained. Those semantics are portable. The alternative is applications needing to make their own wrapper functions with `#[cfg(...)]` that do nothing on Windows... Rust should be taking care of portability issues like that.