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's not every time, only when `prevValue==newValue && prevValue=='' && (prevValidity.badInput || newValidity.badInput)` or something like this. This made me realize that there is also the case where a value was invalid and now it is just empty - this case should also be revalidated and currently it is not covered imo. Anyway, even if you don't diff ValidityState, what do you think about the second point I mentioned? The revalidate thing will not work correctly in case of `updateOn: 'blur'`...