docs(ngModel.NgModelController) use `$evalAsync` instead of `$apply` for event handling

Have the apply called safely during events by using `$evalAsync` rather than `$apply`
This will help ensure that an apply for a user directive is not called during a digest cycle.

Closes #9891
docs(guide/Index): add book AngularJS UI Development

Matthias and I wrote a book on AngularJS which might be helpful for Angular developers.

Merci~!

Closes #9971
feat($routeProvider): allow setting caseInsensitiveMatch on the provider

Fixes #6477

Closes #9873
feat(ngMaxlength): add support for disabling max length limit

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).
This commit changes the behaviour of maxlength/ngMaxlength, effectively
disabling the maxlength validation (always returning true) when maxlength
is set to a negative number. This is more inline to 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).

Related to #9874
Closes #9995
fix(ngMaxlength): ignore maxlength when not set to a non-negative integer

This makes the behaviour of maxlength/ngMaxlength more inline with the
spec.

Closes #9874