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
It seems a shame that we must touch so many function on NgModelController with this `revalidate` parameter.  Could we not set it as a property on the controller, say `needsValidation` or something, which is then checked in `$commitViewValue`?