Enable compatibility with IE10 and browserify

Added a wrapper to `setImmediate` because `async.setImmediate` was throwing "Invalid Calling Object" errors in IE10. Browserify shims the `process` variable and gives it a `nextTick` function, which necessitates this fix for both cases.

I used the same logic that the previous contributor did to work around IE10's limited usage of `setImmediate` by wrapping it in a function. Should behave the same way and eliminate issues with Browserify and IE10.