Make `Promise.all` robust in the face of evil promises.

Fixes #89. Thanks @bzbarsky for raising this issue; @anba for elaborating on all potential failure modes; @bzbarsky for outlining the solution; and @cscott for https://github.com/cscott/es6-shim/commit/280230d0d20ec1eac96278505391e5315145f8d5 which contained versions of @anba's tests which asserted the correct behavior, and were adapted for this repo.