WebFrontend: Complete schedule editor (Beta)

There is still some missing functionality and it's only been lightly
tested. Search/Custom rule editing hasn't been tested at all.

Use entirely at your own risk. Feedback would be appreciated.

Refs #11938
Scripting: Add support for php style form arrays (name='foo[a]'). See http://www.php.net/manual/en/faq.html.php#faq.html.arrays
Web Frontend: Invert schedule StartOffset as it makes more sense to me that a negative value means 'early'
WebFrontend: Don't display 'Don't Record' option in the rule editor,
it's not a valid option for the services API.

Users can instead use the 'Delete Recording Rule' menu option.
Remove debugging menu entry, left in accidentally in e221ecd2
Webfrontend: Fix ID mis-match, changed name in one place but not the other
WebFrontend: Check all required fields are present before submitting schedule editor form
MythFrontend Schedule Editor: Pre-populate the season/episode of a recording rule if they were defined by the guide data. User-defined values take precedence.
Fix ordering of Artwork in selection dialogs. Best matches should now appear first, not last.
Fix python bindings to store updates to video markup data.
Services: Allow upcoming recordings list to be filtered by recording rule
Services: Allow conflicts list to be filtered by recording rule
Webfrontend: Show upcoming and conflicting recordings for the
recording rule in the editor.

These are not yet updated automatically when the rule is saved
Services: Include conflicting recordings in the GetUpcomingList()
output even when ShowAll isn't true.

I don't think this was the original intention, but if we are to mirror
the behaviour of the frontend, mythweb etc then this list should
include conflicts. This may yet evolve into a seperate ShowConflicts
argument so both the old and new behaviour are possible.

We already show aborted, failed and other 'bad' states in this list.
Improve rsOtherShowing marking

Don't require the other showing to be on the same channel, just that
it's the exact same program with the same starttime.

While here, rename related methods to better reflect their actual
behaviour.

IsSameTimeslot() becomes IsSameTitleStartTimeAndChannel()

i.e. entirely different from just being the same Timeslot, end time
wasn't checked but Channel and Title had to match

IsSameProgramTimeSlot becomes IsSameTitleTimeslotAndChannel()

IsSameProgramTimeSlot() wasn't actually checking that it was the same
program, it would match a different episode of the same series.
Avoid memleak in LoadFromScheduler()
Squash coverity warning about redundant null pointer check. Coverity 1061552
Fix coverity warning about unchecked return value. Coverity 1135492
Initialise signalMonitorCheckCnt in TVRec. Coverity 1135513
Initialise member variable in GuideGrid. Coverity 1135514