CA-102259: Refactor xenstore-watching code out of xenopsd

This code is potentially reusable by other components, so this patch disentangles the xenopsd-specific stuff from the generic xenstore-watching stuff.

Summary of the refactoring, from the point of view of xenops_server_xen:

 * Split IntMap watches into IntSet watches (domains being watched, moved to xenstore_watch) and IntMap device_watches (list of devices watched per domain, kept)

 * Moved several functions into xenstore_watch's new WATCH_ACTIONS interface:
    - the code that does an action depending on which watch fired (to watch_fired, also including fire_event_on_vm and fire_event_on_device),
    - renamed all_domU_watches (to interesting_paths_for_domain),
    - the device-specific bits of remove_domU_watches (in domain_disappeared, which also inherited the content of cancel_domU_operations),
    - definition of unmanaged domain (in unmanaged_domain), and
    - definition of what we want to do each time we notice a domain running (in found_running_domain).

 * Moved to xenstore_watch's WatchXenstore module:
    - list_domains (verbatim)
    - domain_looks_different (verbatim),
    - list_different_domains (verbatim),
    - watch_xenstore, with the following changes:
       (a) rename {add,remove}_domU_watches to {add,remove}_watches_for_domain (but don't take the device-specific bit in remove_domU_watches)
       (b) call the functions listed above through WATCH_ACTIONS, and
    - the code that creates the watch_xenstore thread (to a function "create_watcher_thread") (verbatim).
CA-102259: make squeezed use the new xenstore-watching interface

The only change to observational semantics is that the following actions are no longer performed atomically:

-				  Mutex.execute m
-					  (fun () ->
-						  IntSet.iter (Hashtbl.remove cache) gone;
-						  IntSet.iter (fun domid -> try ignore(get_per_domain (xc, xs) domid) with _ -> ()) arrived
-					  ) in

Now, we execute (Hashtbl.remove cache) on each disappeared domain, separately, and get_per_domain on each new domain, separately.
CA-101580: rrdd: watch xenstore instead of polling

xcp-rrdd is interested in domains' data/meminfo_free values. In one example, polling xenstore for these values took about 30 seconds for 700 VMs. Instead of polling, use watches.
Install xenstore_watch as an ocamlfindable package

This enables it to be used by the rrdd plugins, for which the code lives in a different repository.
Merge pull request #1182 from simonjbeaumont/CA-102259-cw

CLEARWATER: CA-102259: Refactor xenstore-watching code into separate module