Now that the half-duplex emulation code isn't used anymore, it can be removed from the I/O stream api.
Wih the custom I/O implementation, an application can use its own low-level I/O layer instead of using one of the built-in ones. The application only needs to provide a set of callback functions, and libdivecomputer will wrap them into a I/O stream.