On IE <= 10, Object.setPrototypeOf is impossible to shim.

Update test suite so that we don't test functions we can't provide.
Skip tests which require strict mode when running under IE <= 10.
Improve test suite for Promise.

A number of the asynchronous tests were timing out after uncaught
exceptions rather than properly reporting thrown exceptions.
Add a faster setTimeout(0) implementation for Promises.

On Chrome 27/28, setTimeout(0) is throttled to as long as 1Hz, which makes
our tests fail.  Use postMessage where possible for a true immediate dispatch.