fix($animate): prevent race conditions for class-based animations when animating on the same CSS class

Closes #5588
chore($animate): remove useless and expired test
fix($animate): ensure the final closing timeout respects staggering animations
feat($animate): use requestAnimationFrame instead of a timeout to issue a reflow

Closes #4278
Closes #4225
feat($animate): provide support for DOM callbacks