MonadAsync: add isCancel
isCancel determines whether the given exception is the
exception, which is thrown to a thread to cancel it.
This method will be a building block to implement
i.e. rethrowing exceptions thrown in an async thread to the thread that
spawned it. Crucially, we don’t want to rethrow the
to the thread that spawned us, since it was exactly this thread that threw us
this exception. That’s why we will be needing
isCancel needs a
Proxy m argument to avoid ambiguity.