fix(ngModel): use `$evalAsync` for blur events to safely `$apply`

Set the `$touched` asynchronously using `$evalAsync` if the element is blurred during an `$apply`, otherwise it keeps the old behaviour.

Fixes https://github.com/angular/angular.js/issues/8762
Sounds good I'll try to update that. I followed https://github.com/angular/angular.js/commit/719c747cd892ee933e7e414a7dc97e657b88317d#diff-eefe7d65b6795cba34d2b08a27ebf2beR63 which only checked `scope.$$phase`.  

Just to help my understanding is there a reason `$rootScope.$$phase` isn't used there? @tbosch thanks!