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)
I think on windows and unix, it is totally justifiable to enforce returning an int, or even taking `args: &[&OsStr]`. (https://github.com/rust-lang/rust/pull/8806 lead me to believe we never use `WinMain`). I agree however that that backing that into the language isn't so nice.

I think a good solution would be to make the type of `main` be defined via via flexible target specification (or something similar). If the existence of the standard streams could also be defined per platform, all the better.