refactor(modal): use ngAnimate for animation

Supercedes #1772 

This makes use of the new `$animate:close` event to determine that the animation is done instead of using `$transition`. There are minimal changes to the current code and there's one fix and the removal of some timers.
May want to do this via scope.$evalAsync .