Perform rather large refactor

I'm mostly going back on myself here, but I've made the Scheduler implementation fairly dumb.

I've moved most of the API fetch and processing orchestration into the TrackStore in a hope to allow for better batching of initial requests.

The TrackDrawer has become more configurable, to allow potential user control over visualisation. This is done without sacrificing performance.
Clarify empty wavesform check in TrackDrawer

This shouldn't be possible, as such a track shouldn't be returned from the TrackStore.
Make scheduled runnable actually draw its retrieved Track
Implement PeriodicHandlerScheduler