Move cancellation tests to their own file.
Clean up promiseCall helper to use more ES6.
Allow cancellation reasons to be passed through.

Now they arrive at the underlying source via the cancel constructor parameter. Some places in the spec were kind of assuming this already; it was inconsistent. See #129.