fix($animate): only cancel class-based animations if the follow-up class contains CSS transition/keyframe animation code

Closes #4463
Closes #3784
fix($animate): ensure animations work properly when the $rootElement is being animated

Closes #4397
Closes #4231
fix(ngView): ensure the new view element is placed after the old view element

Closes #4362
feat(docs): provide index pages for each angular module
chore(ngMocks): shorten the length of the description line to avoid jsHint errors
docs(guide/directive,guide/compiler,): drastically improve
chore(docs): fix jsHint errors with long lines
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