Refactor carousel to work with ngAnimate

This is a much cleaner solution that makes use of ngAnimate as it was intended.

It requires a few lines of CSS that will be added by default (similar to how AngularJS adds CSS for ng-hide).
I'll add a Grunt task that will provide the CSS in a separate file so that users that have CSP can add the CSS files separately.

Supercedes #1878.

Fixes #1513 #1185.