feat(ngModelOptions): add allowInvalid option

This option allows to write invalid values to the model instead of having them become undefined.

Closes #8290

This doesn't happen on master. Because when $setPending is called then it sets `$valid` and `$invalid` to undefined which results in the sync-validated value being assigned to `$$invalidModelValue`.

With the code you have in here it will get assigned. It may be better to assign it only once the async validators are complete.