docs($route): replace comma with "and"

Remove a comma and replace with "and" on line 444

Closes #9889
docs(guide/scope): describe watch depths

Describe and visualize the three watch strategies: By reference, by collection items, and by value.

Closes #9388
chore(.gitignore): ignore IntelliJ IDEA module files

Ignore IntelliJ IDEA modules files in the git repository

Closes #5273
chore(ci): update protractor to version 1.4.0
docs(tutorial/step_05): explain need for $httpBackend.flush in tests

There is an excellent explanation for the need for this in the documentation that may be helpful to
tutorial users, so I added a link to it.

Closes #9919
docs(tutorial/step_12): small change to overview

The bullet points at the beginning of the article were a little hard to understand because they
didn't follow the grammatical form of the preceding articles. I hope these small modifications make
it a little easier for someone else to read.

Closes #9922
docs(tutorial/step_12): added 'see phone-detail change'

This one caught me out for a while because, despite the note underneath, I didn't notice the addition
of <div class="phone-images"> and it's repeater until later.

Closes #9924
feat(ngMock): decorator that adds Scope#$countChildScopes and Scope#$countWatchers

When writing tests it's often useful to check the number of child scopes
or watchers within the current current scope subtree. Common use-case for advanced
directives is to test that the directive is properly cleaning up after itself. These
new methods simplify writing assertions that verify that child scopes were properly
destroyed or that watchers were deregistered.

Closes #9926
Closes #9871
docs(guide/Running in Production): ng-strict-di

Adding note about Strict DI mode.

Closes #9908
fix($compile): do not rebind parent bound transclude functions

The `$compile` public API documentation indicates that
a transclude function may be passed as a second parameter, but
it was not clear that this is **not** the same function that is given
to directive link functions as the `transcludeFn` parameter.

We would like to be able to pass in a transclude function the public
linking function that is returned from `$compile` if we wish to, for
example, use lazy compilation inside a directive.

Doing so, however, highlighted two bugs:

* First, the transclude function would get rebound, incorrectly, changing
its scope from its original binding.
* Second, the `containingScope` would not be updated and the wrong
`$parent` would be assigned to the `transcludedScope` resulting in a
memory leak.

This patch fixes both of these issues.

It also converts various private optional positional parameters on `publicLinkFn`
into an `options` parameter, which is an object hash. The new `options`
parameter is documented as part of the public API.

Thanks to @lgalfaso, @tbosch, and @petebacondarwin.

Closes #9413
test($compile): use `ngMock.Scope.$countChildScopes()`
feat(ngAria): announce ngMessages with aria-live

By including the `ngAria` module, `ngMessages` will automatically include the aria-live
attribute with an assertive voice, allowing validation messages to be spoken throuhg a
screenreader.

Closes #9834
docs(guide/accessibility): Add in-depth guide

Closes #9930
docs(guide,tutorial): fix outdated Protractor API link

Link to the gh-pages deployment of protractor docs, it's much easier on the eyes.

Closes #9946
docs(guide/concepts): spell "Angular" with cap "A", fix typos

In these two instances, Angular was spelled with a lower-case "a." All occurrences should be spelled
consistently.

Compound adjectives preceding the noun they modify should generally be hyphenated (cf Chicago Manual
of Style, 6.40), e.g., "so-called directives."

Closes #9896
docs(CHANGELOG): Document breaking change from 23bc92b1

Document the breaking change from 23bc92b1

Closes #9947
fix($parse): add quick check for Function constructor in fast path
fix($parse, events): prevent accidental misuse of properties on $event
fix($parse): stateful interceptors override an `undefined` expression

When using `$parse` with a stateful interceptor and the expression
is `undefined`, then return the result from the interceptor

NOTE from Igor: this is not the best solution. We need to refactor
this and one-time + $interpolate code to properly fix this. @caitp
is on it. See discussion in the PR.

Closes #9821
Closes #9825
fix(select): use strict comparison for isSelected with selectAs

Closes #9639
Closes #9949