Fix test suite incompatibility with Chrome canary.

Assigning to `constructor` is forbidden, apparently.
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.
Merge pull request #225 from cscott/browser-compat-fixes

Browser compatibility fixes.