Make io_data_t::fd const

In exec(), pipe_{write,read} no longer get reused.
Make io_fd_t members const, make close_fd bool
Make io_file_t members const
In exec(), only add and remove pipe_{read,write} when necessary
exec(): Fix a stupid crash. Remove commented debug code that became invalidated.