Mbst 8930 refactor radioplayer

First version of this, it's still WIP. I'm looking for thoughts on how to reduce the complexity, particularly around the InteractionManager, as this class is doing most of the complicated interactions between queue and file records.
I'm split on this. On the one hand, yeah, it's a sort of double transition - you add an UploadAttempt, that means you've uploaded, therefore the task shouldn't be enqueued on the uploadQueue any more. However, there's a bunch of external stuff, like the removal of tasks from one queue and addition to the other, as well as passing around of ids for UploadAttempts, that makes that approach hard to implement. I'll have a think on how i can clean this up... at the moment it's deffo kinda horrid.