Simplified streaming of a file that doesn't require transcoding, since cherrypy supports returning a file-like object from an http handler instead of manually reading the file and yielding its bytes. Also added a basic progress bar to the web interface. The progress bar only works on files that are not being transcoded, since we don't know the size or duration of files that are being transcoded. Next step is to use the length from track metadata instead
Added singular Artist and Album endpoints that return full details about an artist or album respectively. Trimmed down the objects returned by the Artists and Albums endpoints to that the client needs less data when assembling a list of multiple artists or albums. Updated the client appropriately.
Added an explicit sort to sub-objects of artist, album and disc. This means that an artist's albums will be sorted by title_sort, and an album or disc's tracks will be sorted by tracknumber whenever their parent objects are returned by the api