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`.
Merge pull request #210 from benjamn/rewrite-Function.prototype.bind-polyfill

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