Hash calculation for ATSC

Give hash for ATSC as defined in enigma2 source at
https://github.com/SIFTeam/enigma2/blob/aa38f5d23135119ec34902c888a195274dd2a6f3/lib/dvb/frontend.cpp#L410
Use IsRadio() when deciding the type of service reference

Previously, channel type was set to radio if vpid for the channel is 0.
However, at least with my satellite provider, some TV channels don't
broadcast any content in the night thus resulting both vpid and apid to
be 0. During this time XVDR would give service reference of a radio
channel to these TV channels and that would lead to missing channel
logos. I think it's safe to assume that if both vpid and apid are 0,
it's a TV channel with no broadcast going on. Only flag the channel
as a radio channel if vpid is 0 or 1 and there's non-zero apid. Luckily,
the algorithm described is already implemented in XVDR as IsRadio(),
so let's also utilize this function when creating the service reference.
Also update serviceref.c to match the algorithm.