Add an efficient task-runner based on Promise.resolve().then if available.

From https://github.com/Raynos/observ-hash/issues/2#issuecomment-35857671
this is an efficient implementation of `EnqueueTask` on platforms which
implement `Promise` natively (even if we end up overriding the native
`Promise` to work around bugs).
Merge pull request #231 from cscott/promise-improv

Add an efficient task-runner based on Promise.resolve().then if available
Fixing an incorrect Object.assign test