fix(limitTo): do not convert Infinity to NaN

parseInt(Infinity, 10) will result in NaN, which becomes undesirable when the expected behaviour is
to return the entire input.

I believe this is possibly useful as a way to toggle input limiting based on certain factors.

Closes #6771
Closes #7118
fix($compile): reference correct directive name in ctreq error

Previously, ctreq would possibly reference the incorrect directive name,
due to relying on a directiveName living outside of the closure which
throws the exception, which can change before the call is ever made.

This change saves the current value of directiveName as a property of
the link function, which prevents this from occurring.

Closes #7062
Closes #7067
docs(tutorial): fix typo in module name

Fixed a typo in step 2

Closes #7138
docs(tutorial): specify that ng-repeat goes in markup and not script

Just to make clear that it should not go to test spec.

Closes #7104
fix($location): make legacy browsers behave like modern ones in html5Mode

Previously, LocationHashbangInHtml5Url, which is used when html5Mode is enabled
in browsers which do not support the history API (IE8/9), would behave very
inconsistently WRT relative URLs always being resolved relative to the app root
url.

This fix enables these legacy browsers to behave like history enabled browsers,
by processing href attributes in order to resolve urls correctly.

Closes #6162
Closes #6421
Closes #6899
Closes #6832
Closes #6834
fix($location): fix and test html5Mode url-parsing algorithm for legacy browsers

This CL fixes problems and adds test cases for changes from #6421. Changes
include fixing the algorithm for preprocessing href attribute values, as
well as supporting xlink:href attributes. Credit for the original URL
parsing algorithm still goes to @richardcrichardc.

Good work, champ!
docs(ngMock): grammar fix

Small grammar fix for mock $httpBackend documentation.
docs(form.FormController): fix grammar
fix(input): don't dirty model when input event triggered due to placeholder change

Certain versions of IE inexplicably trigger an input event in response to a placeholder
being set.

It is not possible to sniff for this behaviour nicely as the event is not triggered if
the element is not attached to the document, and the event triggers asynchronously so
it is not possible to accomplish this without deferring DOM compilation and slowing down
load times.

Closes #2614
Closes #5960
style(input): fix trailing whitespace

Oops. I blame vim for this little accident.
docs(tutorial/step_12): fix grammar
chore(Scope): name the $watch deregistration function as
chore(jshint): add jshint for the test/ folder
feat(Scope): add `$watchGroup` method for observing a set of expressions

Given an array of expressions, if any one expression changes then the listener function fires
with an arrays of old and new values.

$scope.watchGroup([expression1, expression2, expression3], function(newVals, oldVals) {
 // newVals and oldVals are arrays of values corresponding to expression1..3
 ...
});

Port of angular/angular.dart@a3c31ce1dddb4423faa316cb144568f3fc28b1a9
refactor($interpolate): split .parts into .expressions and .separators

BREAKING CHANGE: the function returned by $interpolate
no longer has a `.parts` array set on it.
It has been replaced by two arrays:
* `.expressions`, an array of the expressions in the
  interpolated text. The expressions are parsed with
  $parse, with an extra layer converting them to strings
  when computed
* `.separators`, an array of strings representing the
  separations between interpolations in the text.
  This array is **always** 1 item longer than the
  `.expressions` array for easy merging with it
perf($compile): watch interpolated expressions individually
refactor($interpolate): attempt to remove hacky code due to $interpolation perf improvements
perf($interpolate): speed up interpolation by recreating watchGroup approach

This change undoes the use of watchGroup by code that uses $interpolate, by
moving the optimizations into the $interpolate itself. While this is not ideal,
it means that we are making the existing api faster rather than require people
to use $interpolate differently in order to benefit from the speed improvements.
docs(guide/forms): fix quotes around updateOn that broke ngModelOptions example
docs(tutorial): update step_11.ngdoc

Change toEqual to toEqualData in the test 'should create "phones" model with 2 phones fetched from xhr'
to make test more consistent.

Closes #7182