Cleanup and UDP unicast implementation

Hi there!

The last few days I've been busy with trying to get my new HDHomerun up and running with your brilliant idea of a direct libhdhomerun implementation in TVHeadend. During my initial test runs I encountered several issues which also have been reported before (the "no input detected" and some issues with global locks not being held).

So to get things up and running again I decided to do a bit of a cleanup. What I've done in a nutshell:
- mirror the linuxdvb stuff more closely
- fixed some namespace issues with the new configuration API (very minor addition of NULL namespace)
- I implemented the UDP unicast directly, instead of using the threaded libhdhomerun implementation
- lot's of changes to the way code was synced with mutex'es

This is pretty much a complete makeover of some implementation choices; some of which might be bad or good. I'd love to have some feedback!

The current state of my branch is pretty unstable up until now; this request is just to get some feedback on the work done.