Previously AzuraCast had two very similar `$settings` variables, one that was from environment and the other from the database. This refactor distinguishes the two much more clearly.
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.
- Make the Analytics table in the database the primary one for handling statistics for all stations, removing the InfluxDB dependency entirely
- Expand the Analytics table to also track unique listeners per hour and day
- Properly clean up the Listeners table according to each installation's history retention settings
- Implement a cute new animated "waiting for services" startup message that avoids previous wait messages that looked more like errors
* Add form entries and LS config writing for live stream recording.
* Create new Broadcast entity; implement new djon/djoff handling.
* Rework record command procedure and add Station relation to Broadcast.
* Run code reformat on JS to add semicolons back.
* Properly save recording path on entity.
* Initial commit of new streamers Vue component.
* Finish frontend Vue dev and add necessary API endpoints.
* Add loader to Datatable; update npm deps; polish on components.