feat(ngModelOptions): add allowInvalid option

This option allows to write invalid values to the model instead of having them become undefined. In order to make this work, we return the value from validate() even if it is invalid. This doesn't break any test since the model will still be assigned with undefined the moment $$runValidators is invoked (in case this option is not enabled).

Closes #8290