check hasOwnProperty() to skip over holes

The built-in `Array.prototype.filter()` skips over holes:

```
> Array(5).filter(function (x) { return true })
[]
```

but in a non-es5 browser, this module will not skip over the holes:

```
> var xs = new Array(5); xs.filter = undefined; require('./')(xs, function (x) { return true }) 
[ undefined,
  undefined,
  undefined,
  undefined,
  undefined ]
```

this patch checks `hasOwnProperty()` before traversing so that the non-es5 shim behaves like the es5 version.