Implement ASIO-based IoReactor.

This is experimental, but may be tested by supplying a binding
address and port to playslave.

Based very heavily on the Boost::ASIO example code.  Attribution
forthcoming.
Clean up IO submodule.

This includes moving it to its own io/ directory, splitting it into
multiple files, and some documentation and include fixups.