Add callbacks to a queue and schedule a task to flush the queue instead...

Add callbacks to a queue and schedule a task to flush the queue instead of scheduling an async task for every callback, .

Previously, we were using setImmediate when it exists. However, due to #115,
we would like to stay away from it for IE 10 and we don't really need it for
node since this new approach does not result in deeply nested `nextTick`s.
(See #66 for background on the node issue.) It turns out that these are the
only two supported environments that setImmediate is implemented.