Cancellable promise

Added [CancellablePromiseInterface](https://github.com/reactphp/promise/tree/cancellable-promise#cancellablepromiseinterface) implemented by all promises.

__Note on the implementation:__

The `$canceller` callback is responsible for rejecting the promise, there is no automatic rejection mechanism (See https://github.com/reactphp/promise/tree/cancellable-promise#promise-1).

The `$canceller` callback is invoked only, if `cancel()` is called either on the root promise or on __all__ derived promises.

Called on root promise
```php

$promise = getCancellablePromise();

$promise->cancel(); // Promise is cancelled.
```

Called on derived promises
```php
$promise = getCancellablePromise();

$derived1 = $promise->then();
$derived2 = $promise->then();

$derived1->cancel(); // $promises is not cancelled
$derived2->cancel(); // $promises is cancelled
```
Would you consider adding a check to conditionally return this new behavior vs the old behavior based on if a canceller is associated with the promise? Creating a new closure when it isn't necessary would add overhead where it isn't going to be utilized.

Something like:

```php
if (!$this->canceller) {
    return new static($this->resolver($onFulfilled, $onRejected, $onProgress));
}

// Return the new stuff you're adding here...
```