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
@Narretz there is no specific reason for the two expects to be in there.  Do you think it would be better to move them just before the apply block?  I was just trying to ensure that the touched and untouched state remained exactly the same before and after the blur event.