feat(ngAnimate): provide support for animator animation callbacks

prior to this feature, there was no way to detect when an animation has completed
when using $animator inside directives. An optional "done" callback function can
can be now provided to for animation instance method which is fired once the animation has
completed or when a new animation takes place on the same element.

BREAKING CHANGE: in $animator, all public-facing instance methods have
been changed to accept a final callback function argument:

Use the following animation instance methods when performing animations
inside of directives:
animator.enter(element, parent, after, done);
animator.leave(element, done);
animator.move(element, parent, after, done);
animator.show(element, done);
animator.hide(element, done);

feat($animator): provide support for animator to perform both CSS and JS animations at the same time

feat(ngAnimate): provide support for addClass and removeClass animation handlers

feat(ngShowHide): change ngShow and ngHide to use a class name value instead of direct css code

feat(animator): move ngAnimate out of the core and provide support for non-ngAnimate animation detection

feat(ngClass): provide support for animation
chore(ngAnimate): remove $animator.show() / .hide() in favor of .addClass / .removeClass
fix(angular.css): move angular.css code to the top of the head tag to allow for easy style overloading
chore(ngInclude): $animate refactoring + transclusion & tests
chore(ngView): $animate refactoring + transclusion & tests
$timeout changes made
cancel callbacks done
code review fixes