MAJOR refactoring of UPnP so the UPnP implementation is separate from the MP2 specific code (currently named MPnP until overruled) and other extensions e.g. DLNA.

Started changing code over to use virtualized lists.

Started adding Take and Skip functions to DB calls.

Started adding DIDL-Lite support for UPnP and other implementations which depend on it (I suspect DLNA).

Doesn't compile but I wanted to show that there's major work on the UPnP end happening.