UPnP track file state on remote server when supported

This adds support for saving resume points and updating watched status on a server rather than locally, which means users can watch a file on one machine, stop it then pick up on another. Changes on either server or client are mirrored instantly on the other.

Most of this should hopefully be uncontroversial, though I had to push a specific announce message in CSaveFileStateJob when a file is modified on the server, as currently AddBookMarksTofile/ClearBookmarks do not announce. Adding an announcement to those is probably preferable but much more code is needed to determine the content of the file (as they operates on all files not just library items).