Refactor IO system to use an IoReactor class.

This is stage one in the replacement of stdin/stdout IO by ASIO.
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.
Introduce InitAcceptor; constify strings.
Refactor signal initialisation.
VC2013 fixes.

VC2013 is derp.
Use operator= for optionals.

This should be somewhat cleaner.
Fix and tidy up BoostRingBuffer.

It's still a little glitchy, but less so than previously.  Seems to be
underrunning a little.
Use ChannelCount and resampler output format.

This is mostly cosmetic, but the previous code was technically incorrect
as it was using the *input* format.
Don't cast to ring_buffer_size_t.

When the Boost ring buffer is used, this is a compiler error.
Remove erroneous comment.
Refactor the decoder.

The decoder now no longer loops until a frame is finished; each call to
Player::Update now only advances the decoder once.
Remove unnecessary comments.
Remove more useless comments.
:lipstick:

lol, emoji
Replace unique_ptr'd array with std::array.

This could probably just be a C array, but muh constructor.
Replace optional in decoder result with pair.

This makes everything a little bit nicer, and drops out a boost
dependency.
Prepare to split ASIO reactor.

The ASIO reactor will become a set of TCP, POSIX and Windows-based
reactors, to replace StdIoReactor.
Implement Windows ASIO reactor.

This is awful this is awful this is awful this is awful
Fix stdin_stream imports.