fix($parse): support dirty-checking objects with null prototype

Objects created with `Object.create(null);` do not have a `valueOf` method unless
they supply one themselves. To accomodate these, Object.prototype.valueOf is
used when the type of the value is "object", and the `valueOf` property is not
a function (E.G. it's not in the object at all).

Closes #9568
docs(CONTRIBUTING): prototypical -> prototypal

Closes #9608
chore(CHANGELOG): fix name of jqLiteDocumentLoaded function

The newly added private jqLiteDocumentLoaded function is referred to as
jqDocumentComplete (due to a wrong commit message).

Closes #9610
docs(ngModel): fix anchor text

Closes #9604
fix(testability): escape regex chars in `findBindings` if using `exactMatch`

Move the function to escape regexps to Angular.js, fix the link, and use it in
the $$testability service.

Closes #9595
Closes #9600
doc(angular.forEach): note difference from ES262's Array.prototype.forEach

Since Angular's forEach is not a strict polyfill, and takes different paths depending on the type
of collection it is dealing with, it does not throw a TypeError when converting the obj with
ToObject(), as this operation does not need to be performed.

This difference is documented nicely here.

Closes #9142