feat(ngModelOptions): add allowInvalid option

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

@tbosch I wrote the failing test for this and surprisingly it didn't fail :). Looking at this again, this is actually already the case. Regardless of this PR, parsed values always get assign to the model immediately even if there are async validators that need to execute.

This means that currently you might see the value in the model for a moment only to see it disappear when the async validator resolves. If this is not by design I can submit another PR that solves this. Anyway, I'm adding the test to this commit.