MythMusic: fix the 'Check Track Length' option on the edit metadata screen

This updates it to work after the switch to storage groups and uses the new
MUSIC_CALC_TRACK_LENGTH myth protocol command.
MythMusic: remove the redundant calcTrackLength() from musicutils
Always show programs that are still recording in ViewScheduled.

Includes a minor change by David Engel.

Fixes #12060
Use HTML 5 for Android and iOS since they support HLS with HTML 5. JW Player seems broken on Android (unable to test iOS).
WebFrontend: Decrease the video resolution to 720x405 while keeping the bitrate at 800Kbps. This brings it roughly into line with the recommendations for low-end Wifi streaming of HLS. 800 will be too highly for a mobile/celluar network, so I'll add an alternate mobile profile when I figure out exactly how to detect the difference.
HLS: Bump audio only bitrate to 64Kbps. This is the recommended (apple et al) rate and some would say bare minimum tolerable.
detect cropped HD (720p) content

Fixes #12048
Fix fileringbuffer locking up on read()

From time to time, most often seen during LiveTV, FileRingBuffer::safe_read() would lock and not return for a long time (on my system, it would block in excess of 20s).
Upon investigation, the issue occurs while reading a file currently being written to, if a call to read() encountered EOF, returned early and a following call to read() was made, before another write. Under those conditions, read() wouldn't return for a long time, causing the backend to abort the read and dropping the frontend connection.

So instead we now check the size of the current file via a call to POSIX fstat and never try to read beyond the EOF position.
If the file being read isn't a regular, or fstat returned an error, the old behaviour is used: read until we get as much data as we asked.

Surprisingly, this has fixed most of the issues I've been having for years with liveTV:
- Stuttering or temporary free when close to the live
- Freeze at program transition.

Add debugging information while in file mode

Fixes #12045
Add the forums to the README.rst
Revert "Fix fileringbuffer locking up on read()"

This reverts commit 2eb5091b6b2058bf94cb11ef36b5972ef9a18fee.
Fix fileringbuffer locking up on read()

From time to time, most often seen during LiveTV, FileRingBuffer::safe_read() would lock and not return for a long time (on my system, it would block in excess of 20s).
Upon investigation, the issue occurs while reading a file currently being written to, if a call to read() encountered EOF, returned early and a following call to read() was made, before another write. Under those conditions, read() wouldn't return for a long time, causing the backend to abort the read and dropping the frontend connection.

So instead we now check the size of the current file via a call to POSIX fstat and never try to read beyond the EOF position.
If the file being read isn't a regular, or fstat returned an error, the old behaviour is used: read until we get as much data as we asked.

Surprisingly, this has fixed most of the issues I've been having for years with liveTV:
- Stuttering or temporary free when close to the live
- Freeze at program transition.

Add debugging information while in file mode

Fixes #12045
ServerSideScripting: Pass request headers through to scripts

Also change the way we pass query string parameters to the
QScriptEngine, this should be more robust than the previous method.
Improve objectDebug() formatting
Replace a few instances of '.length() > 0' with \!isEmpty() which is more efficient.
WebServer: Give server side scripts access to the client IP address.

Also server ip, server version and request protocol. Ultimately this
list should include most of the values specified in
RFC 3875 - The Common Gateway Interface (CGI) Version 1.1
HTTP Server: Remove duplication of the HTTP Server version string.
ServerSideScripting: Add parameters, request headers and server variables as global objects instead of passing them as arguments.
WebFrontend: Switch to use the global object copy of request parameters instead of the one passed as an argument.
Fix inversion of logic in [b3e01c36]
Add non-static LastModified(void) method