fix(ngModel): test & update correct model when running $validate

If `$validate` is invoked when the model is already invalid, `$validate` should pass `$$invalidModelValue` to the validators, not `$modelValue`. More over, if the model has become valid, the previously invalid model should be assigned to `$modelValue`. Lastly, in case the model has become invalid, the previously valid model should be assigned to `$$invalidModelValue`.

Closes #7836
actually setting the `max` to `1` and setting the input to `12345` is just the preparation so we have an invalid input. What I'm actually testing is that when I'm changing `max` to be `3` in the next line, `ngChangeSpy` is not invoked (since the value is still invalid)