Remove io::io_error

This commit removes all usage of conditions from the runtime and I/O
implementation. The new idea is to return IoResult which is a typedef on
Result<T, IoError>. The error portion of this may wish to change in the future,
but for now it's a good step forward to remove conditions.

Some notable changes:

* the if_ok!/seq! macros
* Removed ByteIterator
* The fmt traits must now return IoResult<()>
* All I/O errors in json encoding/decode are now ignored
* All I/O errors in rustdoc are now ignored
* The signature of print/println has changed
* The signature of read_bytes() has changed