map and forEach: avoid using .call when there is no context

The most common use case is calling forEach and map without context.
In this case, if the iterator function is called directly instead of using iterator.call, there will be a performance gain.

http://jsperf.com/foreach-angularjs

The drawback is a small performance cut when there is a context for the iterator.