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.
- 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
Implement an upgrade of the codebase to use Slim Framework version 4, which includes the following changes:
- Updating to Slim version 4 and the corresponding AzuraCore updates.
- Making all objects PSR-7 Request/Response agnostic (and creating RequestHelper and ResponseHelper objects to interact with the PSR-7 Req/Resp objects).
- Moving to PHP-DI as a DI container and implementing its autowiring support.