Make ngAnimate work as closely as possible to natural CSS transitions

Closes #5588

Fix issues with ngAnimate that look like this:
http://jsfiddle.net/7vk7p/2/

And make them work like how natural CSS transitions would work (without ngAnimate):
http://jsfiddle.net/7vk7p/3/

So that everything plays nicely like this:
https://s3.amazonaws.com/angularjs-dev/ng-animate-race-condition-fix/example/animate.html