refactor(input): use validate() in all $parsers  validations
feat(ngModelOptions): add allowInvalid option

This option allows to getting invalid values on 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.

Closes #8290