Add shuffle mode to web alarm preference interface

This allows the setting of the shuffle mode to apply for each alarm
from the web preferences interface.
Apply the alarm playlist shuffle mode prior to playing
Remember and restore pre-alarm shuffle mode after alarm has finished
Add alarm playlist shuffle setting for old players

A new menu has been added within the Settings->Alarm menu to set the
shuffle mode. This is itself a submenu that offers the three choices
of shuffle mode.
Added support for settig alarm playlist shuffle mode for Jive-based players
Merge remote-tracking branch 'hickinbottoms/alarm-shuffle-settings' into public/7.8
Changelog update - add alarm shuffle modes (thanks hickinbottoms!)

Change-Id: Id0f452b9715a5a547777995f15fa1ef8de2da428
Comment out old ip3k messages menu code to save a query

Change-Id: I13e20590ce5c53ae26cc9e62c5edbe1f14723bb5
Fix wasted check for the wrong timeFormat pref on SN

Change-Id: I396a5990c11c8ad3df989ef1b020e54b04eae841
Change prefs->init() to init a value if it already exists but is undef. This happens a lot on SN and causes extra database queries.

Change-Id: Iebfba16d58fd6037ee840b6a1d859c5a80e51391
Fix date/time display preference on ip3k players

We have some mix of all lowercase timeformat and mixed case timeFormat
preferences on mysb.com. As MySQL treats them the same, but the caching
level does not, some changes never make it to the database, thus are
reset at every player reconnection, or, worse, don't apply at all (when
doen through the web UI).

Add a clientMigrate handler to _remove_ the old preference before
adding it back with the correct name.
Merge branch 'hotfix/timeFormat-preference' into public/7.7
Merge branch 'public/7.7' into public/7.8
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.
Artwork cache is never wiped, leading to infinite growth

We need to make sure the DB is always correctly initialized before we
trigger any action. When running the scanner, this had not happened
before wipe was called, thus skipping this task.
Merge branch 'public/7.7' into public/7.8
Remove log statement
Merge branch 'public/7.7' into public/7.8
Merge branch 'public/7.8' into public/feature/imageproxy