fix(NgModel): make ngMinlength and ngMaxlength as standalone directives

Fixes #6750
fix(NgModel): ensure pattern and ngPattern use the same validator

BREAKING CHANGE:

If an expression is used on ng-pattern (such as `ng-pattern="exp"`) or on the
pattern attribute (something like on `pattern="{{ exp }}"`) and the expression
itself evaluates to a string then the validator will not parse the string as a
literal regular expression object (a value like `/abc/i`).  Instead, the entire
string will be created as the regular expression to test against. This means
that any expression flags will not be placed on the RegExp object. To get around
this limitation, use a regular expression object as the value for the expression.

```javascript
//before
$scope.exp = '/abc/i';

//after
$scope.exp = /abc/i;