Added the ability to cancel a future.

You can now cancel a future if it has not completed, check if a future
has been cancelled, and check if a future has been dereferenced.
You can now cancel CurlMultiAdapter Futures if they have not yet
completed sending.