Make Frontend/Backend connection works when BE is set to use IPv6 link-local address

BackendServerIP6 has created by mythtv-setup will contain the scope Id. That scope id is only valid on the machine mythtv-setup was run on.
We must remove that scope id before attempting to use it, as otherwise the connection would fail.

IPv6 link-local addresses do cause a problem has all network interfaces have one. We attempt to determine the scope id by trying to connect to the backend using each active interfaces. Once the scope Id is found, we cache it for later use.

This fixes #10921
Fix connection to Master Backend where the master IP address is a link-local address

Similar problems as fixed in 5594a6f32e73b0519b556b63983786a01a0f2228, if MasterServerIP contains a scope Id, it will prevent frontend and slave backend to connect.

Also, the master backend detects that it is the master by comparing its IP address with the value stored in the MasterServerIP setting. The comparison is made using strings.
So if MasterServerIP is set to something like 192.168.000.001 it will fail (as we would be comparing with 192.168.0.1). IPv6 can also contains upper or lower case characters.

Add convenience methods GetMasterServerIP, GetMasterServerPort and GetMasterServerStatusPort ; which will ensure the value read is always correct.

Ref #10921
Merge branch 'master' of code.mythtv.org:mythtv
Bump binary version following ffmpeg resync.
MainServer: Add the path to mythutil when using it for some music commands
Revert "Services API: Remove toUTC() from starttime arg to GetProgramDetails, it should already be UTC."

This reverts commit 23813a5913924239eeeb7b418dd4673395294483.
WebFrontend: Add option to watch a recording on MythFrontend. All available frontends will be listed, just select the one you want and it will start playback on that machine.
Added recordedid column to recorded table and ProgramInfo class.

This commit populates recordedid and makes it available everywhere it
can be used.  Future commits will convert internal interfaces using
chanid/recstartts to recordedid where appropriate.  External
interfaces using chanid/recstarts will be maintained throuhg version
0.28 and possibly 0.29.

In addition to passing back the new recordedid from the recorder to
the scheduler, this commit also passes back the recstartts used to
make chanid/recstarts unique.  That fixes some minor issues caused by
the scheduler not knowning the actual recstartts.
HTML Setup: Adapt the tab usage to the jQuery UI 1.10 API
Remove hack forcing MPEG1 video to be treated as MPEG2

This hack was added to fix #287, which was a problem with XvMC decoding.
It makes no sense today, and actually break genuine MPEG1 videos.

Fixes #12160
Don't attempt to issue DB query if there's nothing to do

Prevent harmless SQL statement error messages to be logged when the position map is empty

Regression introduced in b4be8e24f9fab5b6a71f62df8e2c0403bedf4805

Fixes #12161
Revert "Fix connection to Master Backend where the master IP address is a link-local address"

This reverts commit 7e92707d60a9623e59a4e63d72107fa7df6ef708.
Fix connection to Master Backend where the master IP
 address is an IPv6 address

Similar problems as fixed in 5594a6f32e73b0519b556b63983786a01a0f2228, if MasterServerIP is an IPv6 address or contains a scope Id, it will prevent frontend and slave backend to connect.

Several fixes:
* the master backend detects that it is the master by comparing its IP address with the value stored in the MasterServerIP setting. The comparison is made using strings.
So if MasterServerIP is set to something like 192.168.000.001 it will fail (as we would be comparing with 192.168.0.1). IPv6 can also contains upper or lower case characters.
* In some cases, like gCoreContext control server socket, or connection between slave backends and master backend  would only ever used the IPv4 address. Use IPV6 if available

Add convenience methods:
    QString GetBackendServerIP4(void);
    QString GetBackendServerIP4(const QString &host);
    QString GetBackendServerIP6(void);
    QString GetBackendServerIP6(const QString &host);
    QString GetMasterServerIP(void);
    int GetMasterServerPort(void);
    int GetMasterServerStatusPort(void);
    int GetBackendServerPort(void);
    int GetBackendServerPort(const QString &host);
    int GetBackendStatusPort(void);
    int GetBackendStatusPort(const QString &host);

And use them thorough the code, they will ensure the value read is always correct and usable

Ref #10921
Don’t add port number to myth URL if it’s the default port, makes for cleaner URLs

Also put IPv6 URL in lower-case, I find it prettier
Fix search of image artwork in folder

The first character of the path was dropped, causing the search for images to always fail
Add search for “jpeg” type, and make search for image case insensitive.

Note: That entire code should be re-written
Added an initial ProgramInfo constructor using recordedid.

This constructor still uses the underlying code based on chanid and
recstartts.  This is an interim solution to allow other work to
proceed.  The underlying code will be changed to use recordedid too
when it can be more thoroughly tested.
MythFrontend: Fix icon loading in the channel priority editor
WebFrontend: Add a link on the recordings screen for a future options menu. Doesn't actually do anything yet.
HTTPServer: Allow scripts served by master backend to access the Frontend webserver. The Cross Origin Resource Sharing standard.