CA-83837: if a cancellable xenstore watch simultaneously succeeds/fails/is cancelled, apply a prioritisation policy.

We consider that an operation which has succeeds (but simultaneously/historically has failed or been cancelled) has actually succeed.
We consider that an operation which has not succeeded but failed (but simultaneously/historically been cancelled) has actually failed.

So the event priority is:
  success > failed > cancelled

Without this, a cancel that arrives late may be said to have actually cancelled an operation which has already terminated with success/faulure (because cancel is always asynchronous).
Without this, an operation which failed in the past but then later succeeds (eg VBD.unplug) might be said to be still a failure even though it has now completed successfully.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>