refactor($animate): use CSS3 transition/animation events instead of $timeouts to track ongoing animations

Closes #3629
Closes #3874