Pull in my rewritten Function.prototype.bind polyfill from upstream

We don't sync upstream polyfills (because we don't have a story for how they would be used), so this needs to be updated manually.

Sacrificed some negligible performance optimizations to reduce the number of different cases from four to one.

It's important to test this implementation in PhantomJS, since that's the only browser that I know of where built-in functions sometimes do not have a `.prototype`.

cc @zpao