refactor(input): use validate() in all  validations
refactor(input): return value from validate() even if invalid

This doesn't break any test since the model will still be assigned with undefined the moment $$runValidators is invoked
feat(ngModelOptions): add allowInvalid option

This option allows to getting invalid values on the model instead of having them become undefined.

Closes #8290