fix($rootScope): prevent infinite $digest by checking if asyncQueue is empty when decrementing ttl

An infinite $digest loop can be caused by expressions that invoke a promise.
The problem is that $digest does not decrement ttl unless it finds dirty changes;
it should check also if asyncQueue is empty.
Generally the condition for decrementing ttl should be the same as the
condition for terminating the $digest loop.

Fixes #2622
revert: fix($route): update current route upon $route instantiation

This reverts commit 2b344dbd20777fb1283b3a5bcf35a6ae8d09469d.

I think I merged this commit prematurely and in addition to that
we found out that it's breaking google apps.

Jen Bourey will provide more info at the original PR #5681
docs(CONTRIBUTING.md): add link to coding rules

add a link insie the Submitting a Pull Request section
docs(guide): fix a typo
docs(angular.forEach): specifies that .forEach filters using .hasOwnProperty

Closes #5180
Closes #5776
docs(forEach): remove obsolte note
docs(tutorial): fix a typo

Closes #5769
fix($http): ensure default headers PUT and POST are different objects

Send PUT and POST through copy() to make sure they are not the same.

Closes #5742
Closes #5747
Closes #5764
docs(provider): replaced coffeescript with comparable javascript example
docs(docs): preserve path to current doc page when switching versions

Preserve URL path when switching between doc versions.

Closes #4661
Closes #5773
fix($animate): avoid accidentally matching substrings when resolving the presence of className tokens
fix($animate): correctly detect and handle CSS transition changes during class addition and removal

When a CSS class containing transition code is added to an element then an animation should kick off.
ngAnimate doesn't do this. It only respects transition styles that are already present on the element
or on the setup class (but not the addClass animation).
fix($animate): prevent race conditions for class-based animations when animating on the same CSS class

Closes #5588
chore($animate): remove useless and expired test
fix($animate): ensure the final closing timeout respects staggering animations
feat($animate): use requestAnimationFrame instead of a timeout to issue a reflow

Closes #4278
Closes #4225
feat($animate): provide support for DOM callbacks
chore($animate): remove Moz statements from requestAnimationFrame
fix(ngMock): ensure ngAnimate isn't a required mock
docs(changelog): release notes for 1.2.9