Add LMS local image proxy to be used with external image resources

New /imageproxy/{image url}/image.jpg proxy handler to have external
artwork resized and cached in LMS instead of mysb.com based image proxy.
This allows to use network local resources which would fail with the
external proxy.

Some services provide artwork in various resolutions, or even offer
their own resizing service. A custom artwork handler for such services
can be used to optimize bandwidth and processing requirements. There's a
sample implementation for the TuneIn plugin which would download the
smallest available artwork to still fit the client's needs.

In order to make all calls to external resources use the image proxy,
methods dealing with artwork urls should call
Slim::Web::ImageProxy::proxiedImage($url) to make sure the client is
using the proxy. XMLBrowser, status queries etc. have been modified to
do so. This should allow clients (player, web UI, Squeezeplay, mobile
apps etc.) to work with the new proxy without any modification.
Use custom cache for the ImageProxy, as the artwork does not expire

Add custom caching class based on ArtworkCache, but allowing content to
expire. Expiry set to 30 days, running daily cleanups.
Merge branch 'public/7.8' into public/feature/imageproxy
Make use of LMS internal image proxy optional

As long as mysb.com is around, we don't have to force all external image
resources through the local proxy. Only if a custom handler (as eg. for
radiotime) is defined it's being used.

The $force parameter can be used to pass in non-http URLs.
Resize album artwork in web UI too.

Need to extend the regex to not only cover icon.jpg, but cover or
image.jpg as well
Add prefix to temporary images stored in the cache folder
Merge branch 'public/7.8' into public/feature/imageproxy
Use the imageproxy cache!

We did write to the cache, but not read from it, repeating unnecessary
HTTP lookups.
Skip tracks which are not streamable

Sometimes we would have a Deezer track which doesn't have a valid
streaming URL. Playback would stop at this point and would not resume
even after pressing FWD. 

Do not try to play track if we don't get a URL. Skip to the next track
instead.
Don't hammer our backend servers when an invalid Deezer track is queued
up. This would have caused repeated metadata requests every second.
Merge branch 'public/7.7' into public/7.8
Make use of internal image proxy optional. Only TuneIn would always use
it for now.

Add preference to Performance tab in settings web UI.
Merge branch 'public/7.8' into public/feature/imageproxy
Merge branch 'public/feature/imageproxy' into public/7.8
Add changelog entry about the image proxy.
Define logging category for the image proxy
Add helper method to return the minimum size required for a given
resizing specification.
Push requests to resize the same artwork file in a queue so we don't
download the same original multiple times.
Remove initial "select count()" in cache code. It's way too expensive on
large tables.
Merge branch 'public/7.7' into public/7.8