Issue title: Promise.when accepting an Array of Promise . Is it possible?
 Issue body: Hi again,

I currently use Promise to load assets and when I load a batch of asset, I wanted to Use Promise.when(...) but I wanted to pass an array of Promise as the number of asset in the batch is of course not known at compile time. 

Is it something that can be easily implemented in your library (maybe with an extra function whenAll(promises : Array<Promise<T>>) ?

this would then expect a callback in this form : function(values : Array<T>)

Thanks

 Comments: 
 Comment 0: Thanks for checking out promhx.  It is possible to do this.  I had wanted to keep all of the functionality inside the main "when" method, and I came up with a way of accomplishing it just now.  I've pushed the updated changes.

The functionality differs slightly... if you call when() on a "literal" array, e.g. Promise.when([p1,p2,p3]),  I can still figure out the typing for the individual arguments, and so I can give a callback on each individual argument.

However, for iterable instances, I can only give a callback on an array of the resolved values from that iterable.

I hope that makes sense, check the commit notes for an example:
https://github.com/jdonaldson/promhx/commit/8197e9eda7705d6d6035d4454795b91fd2f7e52f

 Comment 1: Thanks for the quick update, the possibility to pass an Array has simplified my code :)

Just noticed another bug :

You forgot to delete the following lines (182-183) in then() :
 _update.push(f);
 _error.push(ret.handleError);

Currently it add f always and if the promise is not resolved it add f again to the update arrray

Cheers

 Comment 2: Thanks again!  fixed.

{'source': 'GithubIssues', 'repo_name_with_owner': 'jdonaldson/promhx', 'issue_id': 7513275, 'repo_stars': 143.0}