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 mythgame build after [cf5b1e87]
Fix unit test on mac.

This add requirement for mac os 10.5 minimum.

unit tests require to run against the freshly compiled non-installed library.
To do so, it makes use of rpath functionality. However, on mac rpath behaves differently and require to modify the library install_path value and amend @rpath to it

Update external libraries to be compiled in the same fashion.
Add AudioOutputUtil::InterleaveSamples method.

Will allow to convert planar audio into interleaved. Currently using FFmpeg's SWR_CONVERT which has a much more extensive range of capabilities.
AudioOutputUtil::InterleaveSamples doesn't need to allocate memory, and is much faster and simpler for this straightforward task.
Add AudioOutputSettings::AVSampleFormatToFormat API.

As name suggests
Update AudioOutputUtil::DecodeAudio to use new API