Transport refactoring

The original thread soup in the player wasn't very reliable when pausing or jumping between tracks on a Raspberry Pi with a USB sound device, even if it worked reasonably well on a regular laptop.

This is a complete overhaul of the player core that is much tighter and more stable, complete with unit tests that describe the behaviour of the central transport.