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.
I realize that you are using the describe to make the its less repetitive, but they are not really readable that way.