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
@pkozlowski-opensource: You are right about `MAX_SAFE_INTEGER`. I meant `Number.MAX_VALUE` or something, but...see below.

@Narretz, @pkozlowski-opensource:
Basically, it is difficult (if at all possible) to test that values of _any_ length are allowed.
So, I guess just testing a non-empty value will be "good enough" :(
I'll remove the last test.