Return immediately if global.setImmediate already defined.
Eliminate Task constructor in favor of simple bound thunks.

Note that this removes support for string handlers, as none of the
informal specifications of setImmediate speak of that behavior.
Eliminate tasks object so that its methods can be minified.

This change alone reduces the uglified size by 340 bytes.
Make attachTo computation a little more minifiable.

A savings of 55 bytes uglified.
Inline canUseNextTick and installNextTickImplementation.

A savings of 71 bytes uglified.
Inline the postMessage implementation for better minification.

A savings of 36 bytes.
Inline MessageChannel implementation for better minification.

A savings of 35 bytes.
Inline onReadyStateChange installation for better minification.

A savings of 63 bytes uglified.
Inline setTimeout installation for better minification.

A savings of 24 bytes uglified.
Get global object more reliably and using fewer bytes.

18 bytes isn't a huge savings, but this code works even when the global
variable is not already defined, in any JS environment.
Set attachTo.setImmediate only once, for better minification.

A savings of 46 bytes uglified.
Reinstate support for stringifiable non-function handlers.

Note that Node's own native implementation of setImmediate neglects to
support this behavior, so I have shimmed global.setImmediate in
test/tests.js in order to make the new test pass in Node.  We might want
to think about shimming global.setImmediate in setImmediate.js, too, but
@domenic thinks we should wait until someone complains, and I agree.
A little less hand-gzipping, and replacing Object.prototype with {}.
De-inline (outline?) installation functions for better readability.

This only adds 10 bytes to the gzip file size, so the added readability
seems worth it.
Remove some unnecessarily explicit global. qualifications.

This actually saves 11 bytes of gzip size. Gzip is some dark magic.
Always postMessage with origin "*".

Since global.location.hostname is neither reliable nor necessary for
security (thanks to the event.source === global and messagePrefix checks),
we should just do the same thing in every environment.
Update authorship information; NobleJS → YuzuJS.
Don't manually line-wrap.

Markdown is better when you let your editor do the line-wrapping.
Explain macrotasks vs. microtasks.
Don't give this API too much legitimacy.

Saying that it's a "W3C draft spec" is a bit too strong. It's rather a proposal by Microsoft to a W3C Working Group.