[pvr.tvh] - re-implementation of pvr.hts from scratch

This is an attempt to fix several limitations within pvr.hts, and rather than
try and rework broken code I've decided to start from scratch. Some basic
boiler plate has been copied and clearly the code isn't miles different
(since its trying to achieve the same basic goals) but it is a rewrite.