Use shared_ptr to manage io_data_t*.
Convert all io_data_t copying to shared_ptr copying.

Copy constructor of io_data_t is removed.
Use const shared_ptr<io_data_t>& instead of copying where appropriate.
Merge branch 'oo-io' of git://github.com/xiaq/fish-shell into xiaq-oo-io
Replace some shared_ptrs with const shared_ptr &. Don't use shared_ptr in postfork.cpp. Eliminate copy constructor in io_data_t. Simplify some other uses of shared_ptr<io_data_t>
Remove io_duplicate, which is no longer used