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.