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