cancel: Add cancelable utility

This adds a common paradigm for handling a task that may need to be
canceled.

Change-Id: I2d06318f56788045f2688da137698dd7177e1fa2
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/test/meson.build b/test/meson.build
index cd89f27..8a2ae6c 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -21,6 +21,7 @@
 endif
 
 gtests = [
+  'cancel',
   'exception',
   'handle/copyable',
   'handle/managed',