Queue up and propagate progress updates before resolution

Consider the following:

```php
$deferred = new Deferred;

$deferred->progress('progress 1');

$deferred->resolve();

$deferred->progress('progress 2');

$deferred->then(null, null, function($update) {
    echo $update;
});
```
To my understanding, the progress handler should echo ``progress 1`` because it is called before the resolution of the Deferred.
Currently it does not and this PR changes this behaviour.