Cleanup and simplify the HLS Recorder.
MythDownloadManager has a memory leak, which can be terminal when used by

the HLS Recorder.  Add a simple MythSingleDownload class which uses
QNetworkAccessManager directly to avoid the leak, until it can be found and
fixed.
The classes defined in httplivestreambuffer.cpp were originally designed for

HLS playback, and are inefficient for recording.  Create a new
recorder-specific HLS processing class called HLSReader.  Since it is
specifically designed for recording, HLSReader is more efficient and faster.
Add missing 'class' to friend declaration.
Load category_type into ProgramInfo for recordings
Quiet some HLS logging
Services: Add UnDeleteRecording() method. Name may be subject to change.
WebFrontend: Add support for undeleting recordings; Show a message if the guide/recording list is empty; A few bug fixes and cosmetic tweaks.
WebFrontend: Fix context menu bug affecting Firefox and Chromium (but not Opera)
WebFrontend: Fix subtitle scaling issue in Chromium.
Fix lossless transcode.

Following 6c3653cd378aacef10b7706d8b7f71beae41274c, lossless mythtranscode got broken.

This is just a quick workaround, the whole code needs to be revisited and properly use FFmpeg API

Fixes #11213

Signed-off-by: Jean-Yves Avenard <jyavenard@mythtv.org>
Since IPv6 addresses can contain %{num} as the zone index, it's not safe to use QString::arg() in GenMythUrl(). Potentially fixes #11937
Simplify MythCoreContext::GetMasterHostPrefix(). It's a waste of time to get the IP/port from the socket when we can be using the values from the settings instead, if we're not already connected to the master we will soon be connecting anyway to conduct the file transfer.
Allow the Guide start channel to be the "natural" Live TV channel.

If the DefaultTVChannel setting is left blank, then the EPG starting
channel is dynamically selected to be the same channel that would
naturally be tuned when Live TV is started.  This depends on the
available cards, their Live TV priority ordering, and the current
value of the starting channel for the inputs.

Note: It looks like there are still problems selecting the correct
tuner and starting channel when starting Live TV, which need to be
separately fixed.

Refs #11922.
WebFrontend: Increase the size of the preview image to fill the available space. Refs #11938
Services: Add DVR::GetUpcomingList() to the scriptable API
Update cardinput.startchan upon successful Live TV tuning.

Previously, this was only done when switching inputs during Live TV.
Prefer the DefaultChanid setting when picking EPG channel.

This more closely matches the logic of picking the starting channel
during Live TV startup.  Refs #11922.
Add Program Guide to the top-level menu.

For menu themes that contain Watch Live TV in the top-level
mainmenu.xml, add a button for Program Guide.  This only applies to
defaultmenu and mediacentermenu themes.  Refs #11922.
Add tunability tests to the Watch This Channel menu entry.

Make sure the selected channel can actually be tuned before offering
the "Watch This Channel" action.  Refs #11913.