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
fix($parse): add quick check for Function constructor in fast path
fix($parse, events): prevent accidental misuse of properties on $event