Run plugins asynchronously.

* Includes Function.bind() polyfill to support IE < 9.0, and older Safari (< 5.1).
This entire block is useful only because of setTimeout. If we simple use the `var self = this` trick we don't need it. Also we are adding our own bind method to function's prototype. If someone else tries to bind after us they may check for something similar. Then everyone would get our `bind`.