refactor(ngModel): remove $$invalidModelValue and refactor methods

- define `ngModelGet` and `ngModelSet` to already use
  the getter/setter semantics, so the rest of the code does
  not need to care about it.
- remove `ctrl.$$invalidModelValue` to simplify the internal logic
fix(ngModel): render immediately also with async validators
fix(ngModel): update model value with async validators correctly

If the view value changed in the first digest and there are async validators,
the view value was never applied to the model after the validators were
resolved. Only important for tests.