docs(CHANGELOG.md): add changelog for v1.3.0-beta.18 and v1.2.22

Closes #8581
docs(CHANGELOG.md): fix typo, it's 1.2.22 not 1.2.2!

Whoops!
chore(doc-gen): move e2e tests into docs folder

These tests didn't really fit in the test folder as the docs app is mostly
a separate entity from the AngularJS codebase.
docs(guide/e2e-testing): correct link to protractor's getting started

angular/protractor@fcd973b#diff-f3b56000093113bd3bfb6c9c05e7e945 splits the overview doc into
multiple files, and removes overview.md from the repository entirely, making the current link a 404.

This CL points the link to the new getting-started document rather than the overview, and avoids
linking to a missing document.

Closes #8595
feat(ngRoute): add method for changing url params

Add a $route#updateParams method for changing the current route
parameters without having to build a URL and call $location#path.
Useful for apps with a structure involving programmatically moving
between pages on the current route, but with different :param
values.

Properties in the object passed to $route.updateParams() will be
added to the location as queryParams if not contained within the
route's path definition.
perf(benchpress): add benchpress node module and port over large table test
docs(benchpress): add readme with instructions on using benchpress
feat(benchpress): configure benchpress grunt task
fix(jQuery): cooperate with other libraries monkey-patching jQuery.cleanData

Some libraries (like jQuery UI) patch jQuery.cleanData as well. This commit
makes Angular work correctly even if such external patching was done after
the Angular one.

Fixes #8471
feat(jqLite): implement the `detach` method

Closes #5461
perf(Scope): use remove the need for the extra watch in $watchGroup

Instead of using a counter and an extra watch, just schedule the reaction function via .

This gives us the same/similar ordering and coalecsing of updates as counter without the extra
overhead. Also the code is easier to read.

Since interpolation uses watchGroup, this change additionally improves performance of interpolation.

In large table benchmark digest cost went down by 15-20% for interpolation.

Closes #8396
chore(Scope): remove deregisterNotifier feature for $watch

We no longer have a need for this feature that was added to primarily support
$watchGroup (see previous commit).

BREAKING CHANGE: deregisterNotifier callback for $watch is no longer available

This api was available only in the last few 1.3 beta versions and is not
very useful for applications, so we don't expect that anyone will be affected
by this change.
fix($watchGroup): call listener once when the watchExpressions array is empty
refactor(perf): migration event delegation benchmark to benchpress
style($rootScope): add semicolon for jshint
perf(jqLite): don't recreate the Node.contains polyfill
refactor(jqLite): drop Node.contains polyfill

Node.contains is supported on IE5+ and all the other browsers we care about.
refactor(jqLite): don't recreate mouse event map
refactor(jqLite): remove code duplication
perf(jqLite): don't use forEach in #off

off() is called on each element removal, so we want to make it as fast as possible