This PR also contains the start of the Jukebox player backend, but should be merged to main now even though Jukebox is not complete, since it unblocks #11 and #33, and also the ability to add support for the OpenSubsonic transcodeOffset.
defined new simplified Player interface to allow for multiple player backends
PlaybackManager serves as an intermediary between user playback commands and the actual Player, for all operations
LoopMode logic now resides entirely in PlaybackManager
Queue is managed entirely by PlaybackManager, the player is only given the current track and next track (for gapless)
This PR also contains the start of the Jukebox player backend, but should be merged to main now even though Jukebox is not complete, since it unblocks #11 and #33, and also the ability to add support for the OpenSubsonic
transcodeOffset
.