test($parse): adding benchmark for execution of $parse()ed expressions

Part of #8901
perf($parse): remove getterFn wrapper for internal use

Closes #8901
docs: add perf todo notes from #8515
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.
feat(ngModelOptions): add allowInvalid option

This option allows to write invalid values to the model instead of having them become undefined.
Use this together with calling `ctrl.$setValidity` directly for displaying errors
from serverside validation.

Closes #8290
Closes #8313