fix($animate): ensure animations work with directives that share a transclusion

Closes #4716
Closes #4871
Closes #5021
fix($animate): ensure chained leave animations never get called twice

Closes #5278