video library: list UPnP servers among video sources

This adds the functionality to list detected UPnP servers among video library sources and removable devices (like USB sticks and removable hard disks). It auto-updates the listing when a new UPnP server is discovered or a UPnP server is shutting down.

Unfortunately it doesn't work for music, picture or program sources because they still use the old logic to retrieve sources. They also don't support listing removable devices. While this is sad it's out of the scope of this PR. But once they use CSourceDirectory somewhere in the future they should benefit from the same functionality.
No because if getting the sources fails we should return false independent of whether we can get UPnP servers or not. Keep in mind that if `GetDirectory` returns false a serious error has occured which should result in an error in the GUI.