Adds setImmediate fallback if process.nextTick isn't available

On IE10, use setImmediate(fn) instead of setTimeout(fn, 0) to speed up execution. This also means that step should work with setImmediate polyfills that use postMessage hacks to beat the performance of setTimeout(fn, 0).