Split out io_pipe_t, let io_buffer_t inherit it
Make io_data_t pure virtual, its constructor protected