refactor(modal): use ngAnimate for animation

- Fix scope.$apply call not working previously because scope was already
  destroyed. Use $rootScope instead.
- Move $destroy call nearer to the dom removal.
- Remove fallback timer (emulateTime param)

Fixes #2585
Fixes #2674
Fixes #2536
Fixes #2790