Fix a URL I missed in the Channel Editor. Also fix the broken link to the Channel Icon.
Enable forward-only cursors with all prepared database connections.

QT docs indicate that there are significant speed ups and a reduction
in memory usage by enabling forward-only cursors. Since mysql only
supports forward only cursors QT must cache the entire result set in
memory in order to support bi-directional iteration and seeking. By
explicitly telling QT that we only care about iterating forward
through the result set QT can avoid this caching.

Unconditionally enable this since all existing uses of the database
iterate forward over the result set.
ProgramInfo::LoadFromProgram: Move the query 'fixups' out of FromProgramQuery

These fixups should ultimately be rethought or removed, they append
WHERE, GROUP BY or ORDER BY clauses to the end of the sql whether or
not it that's syntactically correct. More to the point however they
alter the query from what was requested by the caller in a
non-transparent way. A complete rethink of LoadFromProgram() is
probably required, where instead of passing in raw SQL there are more
arguments to the method to control it's output.

We don't want to use GROUP BY in combination with LIMIT or OFFSET as
this causes the query to take as long as it would without the
LIMITS. For the program table that can mean it takes 10 times longer
than it otherwise would. It's faster to filter out any duplicates when
iterating over the result set.
Services API: Remove useless GROUP BY clauses from GetProgramList and GetProgramGuide. This speeds them up, significantly in the case of GetProgramList.
Add the approximate query execution time to the database query logging.
Revert "Allow PiP when using a VAAPI playback profile"

The issue is in VAAPI decoder, so revert it for a better fix

This reverts commit 4a289572b54f076443f295cfae21f77e6d0f4d93.
Implement copying one VideoFrame into another where strides are different

copy(VideoFrame*, VideoFrame*) is buggy in that it simply copy the content of one frame into another, ignoring resolution and stride size.

For now, only handle copying a frame into another where the resolution is the same but the strides are different.
This is required for VAAPI Null video output as typically, the frame extracted doesn't have a stride equal to the width of the video, and instead is 32 bytes aligned.

Code could be optimised and SSE accelerated, to come
Fix VAAPI accelerated PiP

PiP wasn't possible with VAAPI playback. There was the issue that only one VAAPI context was allowed at a time, and then the frame retrieved couldn't be used as-is (fixed with 520b8bceb57235bba397fe7c15e12bc25f365ca5)

Drop VAAPI NV12 frame format support, the conversion to YV12 as it is is buggy and from a quick search/test, all VAAPI backends support either YV12 or YUV420P format, so there's no use for it anyway.
WebFrontend: Make the channel editor grid use all the available width
Show the 'Frontend Connected' messages when a known frontend reconnects.
Fix copy/paste error in [88a6a8d]
Use the system hostname in the temporary Time Zone check connection. There's no reason to use a false hostname here and it makes tracking client connections harder, especially if multiple slaves/frontends connect at the same time.
Ensure the CLIENT_CONNECTED/CLIENT_DISCONNECTED are sent only once for each frontend
Channel scanning: unbreak the cli.  Teardown() frees and NULLs
sigmonScanner, so testing it to be non-zero is always going to fail.
Further, if sigmonScanner is invalid, then transports will be empty, so that
is all the test we need.