A type safe, low level replacement for `std::io`.
Supports `no_std` for embedded development, just disable cargo feature
Because of limitations of `std::io::Error` type, `genio` provides `Read` and
`Write` traits that allow implementors to choose their own type. This type can
be better at expressing what kinds of error can happen.