factored out the server checking code from the Backend model to
a separate WebServer class. The code has been improved so that
preg_match is no longer needed when checking the authentication
realm, and the custom exception classes previously used have been
removed.
return an empty string instead of false for malformed
WWW-Authenticate headers
remove the "keyField" parameter from LibraryDataProvider's
constructor. Since it always operates on Media objects the key
can be deduced from the first data item (no key is needed if the
data set is empty)

This change means that getId() is defined in Base instead of being
abstract and getIdField() has a default implementation that
derived classes can override to indicate which field should be
used as the identifier
factor out the commonalities from the index actions to a common
base method
create a playlist factory and a base class for playlists which
functions as the interface. This way it's easier to add more playlist
formats
factor out the actual serving of playlist files to a separate method
don't hardcode the playlist extension
add a setting for choosing the playlist format (fixes #161)
add support for PLS and XSPF playlists
include item artwork in XSPF playlists
serve newly generated thumbnails directly instead of redirecting to
them. This way we can use as-of-yet non-existing images for e.g.
playlists where the client is not guaranteed to follow the redirect.
update CHANGELOG.md