Rationalise Audio interfaces.

This is a big refactoring that cleans up the interface for Audio and
PlayerFile, makes Audio into an abstract class (implemented by the new
PipeAudio class), and generally makes things less confusing.

This has NOT been tested yet.  I expect a lot of audio code is broken,
and this should NOT be pushed in before it's been properly tested.  I
intend to write some unit tests to test the more basic properties, but
an actual demo run is needed.
Separate interface/implementation for AudioSystem.

This is mainly for mocking purposes later.
Style: remove double-newline.
Add some initial tests for PlayerFile etc.

I'll probably check the coveralls reports and add some more tests
accordingly.
Bonus: work on man page.
Perform invasive surgery on Player.

Mainly removing a lot of useless layers of indirection.
Streamline player subcomponents.

Player is now built from existing player components.
For the more buzzwordly-minded of you, it now uses 'dependency
injection' or something like that.

This allows us to set the position delay much more easily, without
needing a setter method.
Simplify ResponseSources.

Now, ResponseSource takes its intended sink in the ctor, and cannot
have its sink changed later.

Also, Emit is now const in its argument.

Changes pretty much everything, because pretty much everything is
either a ResourceSource or constructs one.
Add more PlayerFile tests.

Bowling for 100% coverage!
wtf tests
Remove a nasty use-after-free bug.

Replace it with an even more nasty const_cast.  Sheesh.  Hopefully, one
day, I'll sort this mess out.
Merge pull request #66 from UniversityRadioYork/mw-interfaces

Interfaces, code cleanup, and coverage, oh my!