feat($animate): allow directives to cancel animation events

Yes they can, but the noop is here since the `performAnimation` function does a return statement when the animation is skipped. Would it better to refactor `performAnimation` to return `angular.noop` each time and the actual animation function when it is successfully started?