[fix] forEach yields different results when you supply it a context

Seems to transform a string to an object:

```js
var foo = 'foo';

collection.each([1], function () { console.log(this === foo); // false }, foo);
```

So we'll use `.call` instead as that does yield the correct results.