Cancel promise array items when a Cancellation error is handled by the promise array

This fixes the fact that Promise.props and Promise.all don't cancel the promises that they are waiting on when cancellation errors are propagated to them.

Added unit tests in the Hadron repository side of the change.