[#12] programmer cancellation

- degenerate cancelled promise
- async cancellation
- also fixed some incorrect async race tests
[#12] cancellation support in recover

- signature change, promise of value, not optional<value>
- refactored how cancellation is signaled
[#12] cancellation when filtered
[#12] to blocking cancelled
[#12] cancellation semantics

- cancellation is equivalent to broken with cancellation exception
[#12] on cancel
[doc][#12] update recover example
Merge branch 'cancellation'