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)
> recv is a commonly used POSIX/socks function used for dealing with networking. 

And? Every POSIX system also has a top-level `usr` folder and yet that doesn't mean that software systems talking about users should prefer "usr" over "user".

Just because someone came up with a dumb abbreviation 30 years ago doesn't mean we should repeat that mistake.

Also, Rust is aiming for more than just the POSIX market. There's no `recv` on Windows.

> Note, however, that recv and send are still operations on channels.

Then `recv` should be renamed there as well. This should be done before 1.0 locks us into bad past decisions.

Rule of thumb: unless there's a truly _fabulous_ reason to abbreviate a name in an API, it should remain unabbreviated. The whole "I don't want to type long names" problem is solved with tools like editor code-completion. **Code should be written to optimize for its many _readers_, not its sole _writer_.**