Immutable io data t

These commits make `io_data_t` subclasses mostly immutable, except for `io_pipe_t::pipe_fd`, because it turns out [there is no way to initialize a const array before C++11](http://stackoverflow.com/questions/161790/initialize-a-const-array-in-a-class-initializer-in-c).

Perhaps it would be worthy to do a `const_cast` to make `io_pipe_t` totally immutable too.