Try to fix corner cases when stopping in-progress recordings.

The backend uses EncoderLink::MatchesRecording(), which in turn uses
ProgramInfo::IsSameRecording(), to determine which recorder to stop.
Unfortunately the logic used is too strict in some respects and too
loose in others.  It is too strict in that it requires an exact match
on ProgramInfo::recstartts when there are many places in the code
where the exact recstartts used by the recorder is not known.  The
result is the stop recording request is ignored in those cases.  It is
too loose in that it doesn't only uses chanid and recstartts.  The
result is that it can stop the wrong recording in some cases.

This change attempts to resolve at least some of the issues.  Changed
PI:IsSameRecording() to also check the program title.  Changed
EL::MatchesProgram() to check PI::IsSameProgramWeakCheck() and the
inputids instead of PI::IsSameRecording() when the inputid is known.
This handles the cases where the exact recstartts isn't known.
Finally, removed a work-around for this problem in ScheduleCommon that
didn't always work.

(cherry picked from commit 8116fde7f46494dda0c7ca7658c3bf22e9340b34)