fix(forEach): add the array/object as the 3rd param like the native forEach

This makes all the different object types supported by `angular.forEach` more like the native `Array.forEach` by adding the 3rd argument to the callback. Also adding tests to make sure all the different object types invoke the iterator with all 3 arguments and the context.
can you rename all of these too `should follow the ES spec when called with array` ?