fix(ngEventDirs): blur and focus use $evalAsync to prevent inprog errors

Request Type: bug

How to reproduce: 

- ng-click triggers focus() on an element that has ng-focus 
- ng-key* triggers blur() on an element that has ng-blur 
- moving an element  in an ng-repeat  that has ng-blur before the preceding item

Component(s): 

Impact: medium

Complexity: medium

This issue is related to: 

**Detailed Description:**



**Other Comments:**

This fixes cases where ngFocus and ngBlur will throw $rootScope.inprog errors, because they have been called during an active digest. There are (at least) three scenarios where this can happen, see above

ng-click triggers focus() on an element that has ng-focus
ng-key* triggers blur() on an element that has ng-blur
moving an element with ng-blur in an ng-repeat before the preceding item

There's some discussion about this in #5402

I'd say we give it a shot and see if it causes any problems. Using $evalAsync was suggested by @caitp in https://github.com/angular/angular.js/issues/4979#issuecomment-35659108 .

Fixes #5945
Closes #5402