Remove deadlock in the background xenstore event watching thread

In the watch callback (called from the connection's dispatcher thread)
we were issuing further "watch", "unwatch", "read" RPCs which deadlocked
waiting for the dispatcher to return.

We now queue watches from xenstore in our own queue and process them
in a separate thread. Since the events are being generated by other
concurrent processes they need to be queued somewhere: it's probably
better to reduce the load on xenstored by queueing them here.

We have a maximum queue length (settable in the config file) of 1000
and if we breach that then we close our connection and restart the thread
after a short 5s delay.