[pvr] Fix unexpected sub channel merge in EPG grid

Using backend channel number, number would be not unique if any sub channel exist.
So don't use it to sense channel breaks. Use unique channel identifier instead.
why do you use the shared_ptr constructor instead of a normal variable assignment like it was before?
`CPVRChannelPtr channel = tag->ChannelTag();`

and could you please only move the 3 lines instead of this new if surrounding the whole code block? this introduce less changes here.