feat(ngMaxlength): disable maxlength when not set to a non-negative integer

1. Previously, setting the maxlength to a negative number, would make all input values invalid (since their length should be less than maxlength, which is impossible).
2. Furthermore, supplying a non-numeric value would set maxlength to 0 (effectively only allowing empty values - although this is not very likely the intended behaviour).

The 1st commit fixes (1): Adds support for disabling the max length limit by setting maxlength to a negative number.

The 2nd commit "fixes" (2): When specifying a non-numeric value for maxlength (e.g. `""`, `null`, `"abc"`), the max length limit is disabled (i.e. the validator will return `true` for any input).

Note that the behaviour implemented in these 2 commits is more inline with how the HTML5 `maxlength` attribute works (both in browsers and according to [the spec](http://dev.w3.org/html5/spec-preview/attributes-common-to-form-controls.html#attr-fe-maxlength)).

Closes #9874
Closes #9995
Just avoiding hard-coding a 1000 character long string.
But if you want me to hard-code that, let me know (in which case we probably don't need such a long string).

In fact, if we wanted to push this to the limits we might want to use `new Array(Number.MAX_SAFE_INTEGER)` or something.