[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.
Yes, also calling only one time the constructor for channel instead each time in the loop:
```
CPVRChannelPtr channel(NULL); // Call constructor one time
for (unsigned int i = 0; i < m_programmeItems.size(); ++i)
{
  const CEpgInfoTag* tag = ((CFileItem*)m_programmeItems[i].get())->GetEPGInfoTag();
  channel = tag->ChannelTag(); // Swap only. Here returning a copy counter has been inc
  if (channel && channel->ChannelID() != iLastChannelID)
    ...
    iLastChannelID = channel->ChannelID();
```