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)
@netvl Note that the `.unwrap()` part (or something like `try!()`) is necessary in either cases.  I don't think

```rust
let first = r.lines().next().unwrap();
let second = r.lines().next().unwrap();
```

or

```rust
let mut lines = r.lines();
let first = lines.next().unwrap();
let second = lines.next().unwrap();
```

looks that worse than

```rust
let first = r.read_line().unwrap();
let second = r.read_line().unwrap();
```

As for `chars()`, any Unicode character in UTF-8 occupies at most 6 bytes.  So `read()` into a fixed array on stack will suffice.