fix(ngEventDirs): execute `blur` and `focus` expression using `scope.$evalAsync`

BREAKING CHANGE:
The `blur` and `focus` event fire synchronously, also during DOM operations
that add/remove elements. This lead to errors as the Angular model was not
in a consistent state.

This change executes the expression of those events now asynchronously.

Fixes #4979
Fixes #5945
Closes #8803
Closes #6910
Closes #5402