Add RespondArgs and do proper escaping.

Needs testing and using elsewhere.
Remove const-qualifications on ResponseSink arguments.

This allows ResponseSinks to mutate their internal state in reaction
to receiving a response, which isn't necessary in the actual program
but will make writing tests easier.
Add test cases for the emitter.
Move features to an init-list in player.cpp.

This is because our new emitter cleverly notes that there is
whitespace in MSG_FEATURES, and escapes it!  So we have to provide
it as a list of arguments now.
Announce file on load.

This *should* have happened previously--all the plumbing was there
for it--so I'm not sure why it wasn't there.
Clean up strings and chars in EscapeArgument.
Remove spurious include.
Use raw strings in io_response tests.

Also remove spurious escapes on quotes.
Use string streams to implement DummyResponseSink.

This should allow the constness commit to be reverted.
Revert "Remove const-qualifications on ResponseSink arguments."

This reverts commit 5c38704a4d661b7af7135b3a195a518230122b77.
Fix tests to work with const RespondRaw.
Make RespondArgs take a vector.

This is conceptually easier to swallow than an initializer_list,
and allows for dynamically sized sets of arguments to be sent to
RespondArgs.
Emit entire command for OKAY.

This is now possible thanks to d27c1945.
Remove/inline ResponseSource::StringStream.

More trouble than it's worth.  Thanks, C++-Obama.
Try out IRC notifications.
Merge pull request #46 from UniversityRadioYork/mw-emit-properly

Proper response escaping