UPnP: Refactor various parts of the code

The way we build the object tree has changed allowing for a tree depth
greater than one. e.g. Genre > Artist > Album > Tracks.

The number of queries required to build results has been significantly
reduced which should improve response times.

XBox and WMP 11 specific hacks have been disabled. In part to allow
users of these systems to test new UPnP behaviour, but also because
these non-upnp compliant bits need better segregation from
the core code.

Searching and sorting has been disabled because the existing
implementation was incomplete and broken. This will be finished and
re-enabled soon.

There will be bugs, if you absolutely depend upon UPnP then please hold off
updating for a little so I can fix issues found by wider testing. Of
course if nobody tests UPnP then issues won't get found ...