docs(tutorial/step-3): note that the server needs to be running before running Protractor

Closes #7142
docs(tutorial/step-2): note that ng-app now needs a module name

Closes #7655
docs($rootScope): correct the $watch `listener` parameter description

Closes #8322
style(Angular.js): remove unused variables

Closes #8331
fix(angular.copy): clone regexp flags correctly

Closes #5781
Closes #8337
docs(changelog): release notes for 1.3.0-beta.17 and 1.2.21
docs(tutorial): update step7 ngdoc to fix grammar

This line was missing an 'as'

Previous:
We also have to add the modules dependencies of our app. By listing these two modules as dependencies of `phonecatApp`, ...

New:
We also have to add the modules *as* dependencies of our app.

Closes #8345
docs(tutorial): update step_03.ngdoc

1) The original document is not clear to a new developer in where to place the code.
2) The query.clear() statement to clear the query before the second test is missing in the original document.
3) Refactored to use the query and phoneList variables in both tests, so its easier to read and understand.

Closes #7815
chore(ci): pin sauce connect to v4.3
docs(Scope): clarify naming in the $watch example

Fixes #8254
Closes #8271
docs(ngChange) might not evaluate due to ngPattern

When a pattern is defined for an input field, ngChange is not evaluated
if the input doesn't match the pattern. Only changes to or from matching
patterns evaluate the ngChange expression.

See #7866
docs(ngChange): clarify when the ngChange expression is evaluated

Closes  #7866
docs(tutorial): explain how to modify the port or ip served by `npm start`

A developer working on a remote server will want to change the IP
address which npm start serves on. A developer working on a machine
which is already using port 8000 will want to change the port.

See https://github.com/angular/angular-phonecat/pull/191
fix($parse): correctly assign expressions who's path is undefined and that use brackets notation

Closes #8039
style(AngularPublic): add whitespace to jshint block

Closes #8360
feat(http): allow caching for JSONP requests

Closes #1947
Closes #8356
docs(tutorial): clarify sentence in step 02

Separate two sentences with a period, and clarify the wording by making it less technical: "to the DOM"
vs "to the <body> tag".

Closes #8394
docs(tutorial/step-2): warn reader not to minimise browser that Karma's running on

Closes #8386
docs(dateFilter): fix milliseconds example

Closes #8389
fix($location): add semicolon to whitelist of delimiters to unencode

Some servers require characters within path segments to contain semicolons,
such as `/;jsessionid=foo` in order to work correctly. RFC-3986 includes
semicolons as acceptable sub-delimiters inside of path and query, but $location
currently encodes semicolons. This can cause an infinite digest to occur since $location
is comparing the internal semicolon-encoded url with the semicolon-unencoded url returned
from window.location.href, causing Angular to believe the url is changing with each digest
loop.

This fix adds ";" to the list of characters to unencode after encoding queries or path segments.

Closes #5019