fix(input): improve html5 validation support

This CL improves mocking support for HTML5 validation, and ensures that it
works correctly along with debounced commission of view values.

Closes #7936
 1. If I understand correctly, this is important only in case the html5 validators report a different validity error the second time this is invoked and we want to update `ctrl.$error` with the latest validation problem. If this is the case, maybe we should consider removing the `revalidate` parameter and compare the validity state here with the previous committed one. I don't like it very much, but I think it is a bit better then passing `revalidate` all this way. Another option is to run the validators no matter what in case the string is empty.
 2. Actually, passing the `revalidate` is a problem any way, since it will not work in case `ng-model-options="{updateOn: 'blur'}"`. In this case, this function will be invoked by the blur trigger handler, which will not pass the `revalidate` argument...