RemoteFile: add a CopyFile() static function

This allows either local or remote files to be copied. It's useful to
copy a local file to a remote master or slave BE or vice versa.

Performance seems a little slow may have to try tweaking the buffer size
to optimize it a little.
RemoteFile::CopyFile() check we're not trying to copy a file to itself
ImportMusic: update the music import to use storage groups

This allows the import music screen to move the imported tracks to any backend
with a directory in the 'Music' storage group.  The master will be used by
default but you can save to any BE by using the "Select Where To Save Tracks"
option in the popup menu. The option is sticky so once changed the same one
will be used the next time until it's changed.

Still need to work on the album art side of things.
Add a system event to handle CEC commands

Add a system event "CEC_COMMAND_RECEIVED" together with a token %COMMAND% that is the opcode in decimal.

Signed-off-by: Stuart Morgan <smorgan@mythtv.org>

Closes #11546
Count added to GetTitleInfoList

Signed-off-by: Stuart Morgan <smorgan@mythtv.org>

Closes #11959
Fix segfault in MythUIButtonList::GetItemCurrent(). Fixes #12040
MythMusic: remove 'Directory to hold music' setting from the settings pages
MythMusic: check we have at least one directory in the 'Music' storage group

This make sure we have a directory in the music storage group before trying
to open a screen that requires one. Prompts the user to run mythtv-setup
if non was found.
MusicMetadata: remove some no longer required local file stuff
MusicPlayer: no need to update the music directory when the settings change
MythMusic: remove no longer required get/setMusicDirectory()
should have bumped the version in a5ecdd0c since it changes the plugin ABI

Core and plugins need to be recompiled
Make "DailyArtworkUpdates" a global option

This makes the DailyArtworkUpdates setting a global setting so it can be
properly configured on any frontend. This patch does not include any
code to fix an existing improperly configured setting, which could cause
problems in the future, as the per-host option will override the global
one and will be uneditable without direct database modification.

Refs #12033
Allow housekeeper to track last successful run of task

This adds a new column to the database for tracking the last successful
run of a task, in relation to its last attempted run, for the purpose of
allowing a failed task to rerun on a shorter interval. This also updates
the hardware profiler to retry daily after a failure, rather than
waiting 30 days for another attempt.
MythMusic: remove the local file access from findIcon()

This updates findIcon() to only look for the icons in the AlbumArt storage
group. Currently it only looks on the master I may change this to also look
on any slaves as well.

This also adds caching of the result of the search in a map to speed up the
lookups because searching for files over the myth protocol can be quite slow.
Support a 'homepage' in MythBrowser

Signed-off-by: Stuart Morgan <smorgan@mythtv.org>

Closes #8398
Fix the build after [bb8c246]. Botched hand merging of the patch.
MythMusic: update retrieving album art to use storage groups

This is just a quick fix to get it working again. It really needs reworking
to work better with storage groups.
AlbumArtImages: make sure the hostname is saved to the database
MythMusic: check we have found some tracks before showing some screens

Don't bother showing the playback or playlist editor screens if we haven't
found any tracks instead prompt the user to perform a scan.