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 the cancellation design needs to work in the opposite way, like it does in .NET, i.e. the API user creates an owned CancellationTokenSource object that can be cancelled, and read-only CancellationToken objects are created for it and then passed to functions doing I/O.

The design in this RFC doesn't seem to allow to easily implement a cancelable function that does I/O on multiple streams.