Initial rewrite and migration of housekeeper to libraries.

This rewrites the existing housekeeper found in mythbackend, and places
it in libmythbase to make it available for use by other programs. The
structure is modular, with tasks subclassing one of the base task
classes, and then being registered against the housekeeper instance. The
housekeeper itself is threadless, looping through its list of tasks on a
one minute timer, and queuing up what tasks will need to be run.

The queue is handled by one or more threads independent of the
housekeeper. There will always be one primary thread waiting to be woken
up by the housekeeper, that will work through the queue of tasks
available. If a task is taking longer than one minute, such that the
housekeeper has made another pass and found items waiting in the queue,
an additional thread will be started to begin working through the queue,
while the first will be set to terminate after finishing its current
task. This is so long running tasks such as guide data downloading does
not disrupt any other tasks in the queue.

Currently, the existing housekeeping tasks in the backend housekeeper
have been re-implemented using this mechanism. Additional immediately
planned tasks include a monthly Smolt run to replace the existing
startup check in mythfrontend, and a rescan of available addresses every
few minutes to allow ServerPool to adjust to dynamic network interfaces,
such as frontends on a wireless network, or distributions that have not
finished initing networks prior to the backend starting.

This compiles, but it has not yet been tested in any form. Further, this
is not yet ready for use, as it relies on a not-yet-written schema
update to create a new table and adapt data from the settings table into
it.
Remove old housekeeper from backend.
Add schema update for housekeeping table changes.
Make sure housekeeping run times are in UTC.
Add housekeeping task for hardware profiler (smolt).

This adds a housekeeping task to allow the hardware profiler to be run
periodically through the housekeeper, rather than a single check
performed during frontend startup. This also adds a schema update to
reorganize a few settings related to it.
Add missing header changes for HardwareProfileTask.
Add HardwareProfile task to assorted applications.

This replaces the initial HardwareProfile startup check in mythfrontend
with the new task run through the housekeeper, and adds the check to
mythbackend and mythjobqueue as well.
Fix schema update for HardwareProfile housekeeping task.
Fix typo that registered general cleanup task to incorrect tag.
Correct the database tags of some backend housekeeping tasks.
Make MythFillDatabaseTask run if it missed its original run window.

This corrects an issue where MythFillDatabaseTask would never run if
performing its custom suggested time check and it had missed its
original window. This modifies the DailyHouseKeeperTask:InWindow
method to return true if it is beyond the initial window, but still
within the time frame limits set by 'MinHour' and 'MaxHour' database
settings.
Miscellaneous fixes.

Correct debug logging of task run probabilities.
Add RunProlog and RunEpilog to task thread.
Break SetHourWindow out into a separate method.

This breaks the method used to pull MythFillDatabase run window
restrictions and apply them to the task into a separate method. This
should likely be called any time we do a settings refresh, so these
settings can be changed without restarting the backend.
Fix typo in schema update for housekeeping table.
Fix database update for local scope housekeeping tasks.
Fix static analysis detected error regarding undefined array index in dvdringbuf.cpp

Static analysis (scan-build) detected a potential code path such that guess_palette
could be called without having the palette variables initialized, which would result
in indexing m_clut with an undefined value.
(cherry picked from commit 824013456f41f4c90daa1f1a3879a1c9e06c28c5)

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

Fixes #11550
Merge branch 'master' into devel/housekeeper

Conflicts:
	mythtv/libs/libmythbase/libmythbase.pro
	mythtv/programs/mythbackend/backendhousekeeper.cpp
	mythtv/programs/mythbackend/housekeeper.h
Update bindings for revised schema version.
Fix memory leaks in AC3 encoder
Fix serious out of bounds array write

Double errors had hidden the symptoms.
Updated Spanish/Spain MythFrontend and MythMusic translation
from Antonio Marcos Lopez Alonso

Thank you Antonio!

Closes #11577

Signed-off-by: Nicolas Riendeau <nriendeau@mythtv.org>