Begin revamping playlist and DB code.

As Matt Manser rightfully pointed out on Hacker News, my playlist code sucks because there is way too much boilerplate repeated several times. This is the first step in making DB-related code more consise.
Convert more DB functions to the new query runner.

Query runner is also able to take in a method in the query key and execute it against the connection object acquired to run to run the query.
Convert more playlist functions to use the new DB query runner.
Playlist verification now uses DB query running.

All the playlist functions now use the query runner. There is now a lot less code in this module. Awesome! Tests have not yet been run, but soon.
Removed unused reference to DB connection pool.
Playlist count function now returns proper value.
Restore playlist ID cache usage in playlist module.
Fix error handling and playlist retrieval, bumping version number.
APIs now throw Errors instead of objects.
In-memory caches now retain values longer.
Fix bug where playlist string could not be fetched.
Fix playlist bug where no ID would be when trying to save a playlist that already exists in the DB.
Streamline routing function.
Endpoints now return different status codes based on circumstance. Fix some tests.
Add more assertions to a few failing frontend tests.
Remove the added View method close.

The version of View#remove I am using now removes view listeners, which was the original goal of the View#close method I added.
Playlist now updates correctly after a sync.
Playlist tests are now more restrictive when testing playing tracks.
TrackPlaylist#currentMedia is now a function.

This is because of a condition (potentially a bug) where the playlist identifies a track as the current track, but this track is removed from the playlist. When the playlist executes currentMedia.play(), a track outside the playlist starts playing. To prevent this from happening, currentMedia is a function that returns the track at index TrackPlaylist#currentTrack. This behavior is simpler than the previous implementation, where both the current media and the track number were recorded. Now, only the current track number is recorded.
Various code simplifications.