Provide an interface that allows a xenbus user to explicitly allocate
ids, deal with responses asynchronously, specify the queues to be used
for responses and watches, etc.
More specifically:
* Enhance xenbus_event to be capable of dealing with both watches and
command replies. In particular, arrange that it will contain a
pointer to the watch. We leave the old fields undisturbed because
of the way that this struct is already used in various places.
* Provide that a xenbus_event for a command response contains a copy
of the pointer to the reply message, rather than putting it in the
req_info (which is visible only internally).
* Rename `struct watch' to `struct xenbus_watch' because it needs
to be in the public interface.
* allocate_xenbus_id becomes xenbus_id_allocate; same for release.
* Make xb_write into a public function, xenbus_xb_write.
Signed-off-by: Ian Jackson <Ian.Jackson@eu.citrix.com>