simplify handling of missing endtime at end of file in mythfilldatabase

Instead of making up endtime of "next midnight" and "next 06:00 am" we
just let the database fill in its default of 0000-00-00 00:00 and replace
it later with whatever the next starttime is on that channel.

This has seen very light testing, so I'm commiting it to master only. If
I get positive reports from users I'm happing to merge it into fixes.

Fixes #11541
Fix crashes when pressing menu key during channel change

There’s a short amount of time when changing channel during which there are no video output defined.
Add ReadInternalMode to RingBuffer class

This mode allows to limit the content of the ringbuffer to the content already loaded. Seeking, reading and other operations will not be destructive.
This allows for almost instantaneous streams and bitrate detection.

Duration calculated will obviously be wrong, but as the duration is stored in the DB we’ll use that duration instead anyway, meaning we only have to worry about streams detection itself.

This greatly speed up liveTV transition change and playback startup
Try to open the media for 1.5s, using only the internal data in ringbuffer.

After this, we revert to the previous detection methods. In practice it should never happen
Fix some confusion over the behaviour/purpose of IsSameProgram

Creates a new method similar to IsSameProgram called
IsDuplicateProgram which is purely used for scheduling purposes.

The issue seems to be that IsSameProgram() doesn't do what it appears
it should. Places using it assume that it will match two
programs which are identical - same content - but it's been modified
over time to serve the definition of a 'duplicate' for scheduling
purposes. This means, among other things, that if the duplicate check
method is 'None', then IsSameProgram will return false given two
identical programs.
add unit test for #12049
escape . in regular expression (.pro matches programinfo, too)
treat failed in unit tests as error, now that they have their own target
Add year to ProgramInfo for video.

Fixes #12049
test m3u playlist parsing with multiple channels with the same channel id

Refs #11949
escape backslash in regular expression added in 7c2029b02c

silences a compiler warning about \. being unknown
set default to default sort order

Set default to default sort order according to GetAllScheduled's
prototype. Silences clang warning.
silence msvc warning about truncation from double to float
Revert "Fix GuideGrid to include rsOtherShowing in the 'will record' highlighting colour. Fixes #12081"

This reverts commit 82b02823c4235b21f40a3722cef02e2387722f8f.

Until I re-write the frontend guide grid to match the WebFrontend
guide, this has the potential to cause more confusion that it would
solve. In the WebFrontend guide earlier/later/other showings get
highlighted in a completely different colour making it clear what will
be recorded, what won't be recorded (old episodes/duplicates) and what
will be recorded - just not at that time or on that channel.

Conflicts:
	mythtv/programs/mythfrontend/guidegrid.cpp
Fix null dereference

Coverity ID 1061551
Update doxygen config for current doxygen release.
Disable mythlogserver by default

Too many issues with it
Use QEventLoop for modal windows.

According to the Qt forums, you can call qApp->exec() only once per application, otherwise weird things occur. In particular 100% CPU usage.

Fixes #11666
protect metadata loads from multiple threads

Signed-off-by: Jean-Yves Avenard <jyavenard@mythtv.org>
libCEC interface should use callbacks rather than polling

Fixes #11986

Signed-off-by: Jean-Yves Avenard <jyavenard@mythtv.org>