docs(ngController): do not attach a controller twice

A common mistake for beginners is to attach a controller in both the
$routeProvider and also in the html document using the ng-controller
directive. This change highlights this, to help prevent developers from
doing so in the future.

Closes #4409
docs(tutorial/step-07): fix typo

Closes #4410
docs(modulerr): fix typo

Closes #4418
docs($provide): Fix typo

Closes #4420
docs(ngNonBindable): fix punctuation

Closes #4424
fix($compile): instantiate controlers when re-entering compilation

When we re-enter compilation either due to async directive templates or element transclude directive
we need to keep track of controllers to instantiate during linking.

This piece of info was missing when re-entering compilation and that's what this commit fixes.

I also reordered the properties in the previousCompileContext object.

Closes #4434
Closes #4616
fix($animate): skip unnecessary addClass/removeClass animations

Skip addClass animations if the element already contains the class that is being
added to element. Also skip removeClass animations if the element does not contain
the class that is being removed.

Closes #4401
Closes #2332