Fix Function.bind to accept falsy values

This allows proper binding of any falsy value, such as `null`, `false`, `0` etc.

This avoids bugs such as:
```javascript
function oneUp() {
  return this + 1;
}
var one = oneUp.bind(0); // Is currently converted into {} since 0 is falsy
one() // Should return 1 but the polyfill currently returns "[object Object]1"
```