introduce new watch api
introduce new watch api

This patch adds a new file handle watch interface to libspice, featuring
three callbacks:

  (1) watch_add() -- create a new file watch.
  (2) watch_update_mask() -- change event mask.  spice frequently
                             enables/disables write notification.
  (3) watch_remove() -- remove a file watch.

libspice users must implement these functions to allow libspice
monitoring file handles.

The old interface (set_file_handlers) doesn't explicitly express the
lifecycle of a watch.  Also it maps 1:1 to a qemu-internal function.
In case the way qemu implements file watches changes (someone sayed
QemuIONotifier?) this will break horribly.  Beside that it is very
bad style.

Follwing patches will switch over users one by one to the new interface
and finally zap the old one.

elmarco/spice,SPICE/spice,freedesktop-unofficial-mirror/spice__spice,freedesktop-unofficial-mirror/spice__spice,fgouget/spice,ya-mouse/spice,elmarco/spice,elmarco/spice,dezelin/spice,dezelin/spice,SPICE/spice,dezelin/spice,ya-mouse/spice,mathslinux/spice,ya-mouse/spice,freedesktop-unofficial-mirror/spice__spice,freedesktop-unofficial-mirror/spice__spice,fgouget/spice,mathslinux/spice,dezelin/spice,freedesktop-unofficial-mirror/spice__spice,virtualAMP/spiceplay,Fantu/spice,dezelin/spice,mathslinux/spice,virtualAMP/spiceplay,alon/spice-server,virtualAMP/spiceplay,mathslinux/spice,SPICE/spice,alon/spice-server,alon/spice-server,alon/spice-server,fgouget/spice,Fantu/spice,elmarco/spice,elmarco/spice,mathslinux/spice,virtualAMP/spiceplay,alon/spice-server,Fantu/spice,fgouget/spice,Fantu/spice