feat: sort by
this was much more complex than i thought it would be
also moved shuffle into here as a sorting option
(if you have a queue and you update, the track/disc sorting wont work until you make a new queue since those werent saved to localstorage previously.)
(in the future i may change it so that the queue only stores song ids, and fetches all data from server on startup, instead of most track metadata to prevent hitting localstorage limits. and also get proper updates if songs change. its not like you can really use this offline anyway since we dont have track caching and i dont plan on implementing that.)