Add cancellation support to util::Task.

The magic is coming together...
`cancel_callbacks_` - let's splash out on the extra bits - it's almost Christmas.