Explanation: The upgrade to Liquidsoap 2.0 now means that Liquidsoap itself can hold more than one song in its upcoming queue, which allows us to make functionality like "skip song" work as expected for the first time, but also meant that our previous methods of tracking what songs were and weren't queued didn't work well at all. This overhauls the queue builder by adding a new "is_played" status to each queue entry and treating the entire "unplayed" queue (whether sent to the AutoDJ or not) as the "upcoming" queue, fixing a number of issues.
This migration adds "Storage Locations", managed via a new System Administration panel, that can hold Station Media data, live broadcast recordings, and backups. These storage locations can be local (as they are by default) or remote via any S3-compatible service.
Create a new "StationQueue" entity that contains the upcoming song queue, and split the important AutoDJ functionality across multiple classes (Annotations, Queue and Scheduler).