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.
Attempt to implement POSIX ASIO reactor.

This needs testing on a POSIX system.