test($animate): add tests for noop enaled and cancel methods
chore(benchmarks): disable debugInfo in largetable benchmark
fix(ngModel): allow non-assignable binding when getterSetter is used

Closes #8704
docs(ngModelOptions): fix example
fix(ngEventDirs): execute `blur` and `focus` expression using `scope.$evalAsync`

BREAKING CHANGE:
The `blur` and `focus` event fire synchronously, also during DOM operations
that remove elements. This lead to errors as the Angular model was not
in a consistent state. See this [fiddle](http://jsfiddle.net/fq1dq5yb/) for a demo.

This change executes the expression of those events using
`scope.$evalAsync` if an `$apply` is in progress, otherwise
keeps the old behavior.

Fixes #4979
Fixes #5945
Closes #8803
Closes #6910
Closes #5402
feat(ngRoute): alias string as redirectTo property in .otherwise()

Allow `.otherwise()` to interpret a string parameter
as the `redirectTo` property

Closes #7794
feat(filterFilter): pass index to function predicate

Closes #654
feat(testability): add $$testability service

The $$testability service is a collection of methods for use when debugging
or by automated testing tools. It is available globally through the function
`angular.getTestability`.
For reference, see the Angular.Dart version at
https://github.com/angular/angular.dart/pull/1191
docs(filterFilter): add note on negation
fix($compile): use the correct namespace for transcluded svg elements

This fixes the case when a directive that uses `templateUrl`
is used inside of a transcluding directive like `ng-repeat`.

Fixes #8808
Closes #8816
feat($compile): bind isolate scope properties to controller

It is now possible to ask the $compiler's isolate scope property machinery to bind isolate
scope properties to a controller rather than scope itself. This feature requires the use of
controllerAs, so that the controller-bound properties may still be referenced from binding
expressions in views.

The current syntax is to prefix the scope name with a '@', like so:

    scope: {
        "myData": "=someData",
        "myString": "@someInterpolation",
        "myExpr": "&someExpr"
    },
    controllerAs: "someCtrl",
    bindtoController: true

The putting of properties within the context of the controller will only occur if
controllerAs is used for an isolate scope with the `bindToController` property of the
directive definition object set to `true`.

Closes #7635
Closes #7645
fix(ngBindHtml): throw error if interpolation is used in expression

Closes #8824
docs($filter): Date filter am/pm case

Use uppercase for AM/PM in date filter

fixes #8763
chore(compare-master-to-stable): make checks for bugfixes better

Prevent the script from alerting you if a docs fix has something like "Fixes typo in foo", which is
not how bugfixes are worded.

Closes #8801
fix(input): validate minlength/maxlength for non-string values

Use the viewValue rather than modelValue when validating. The viewValue should always be a string, and
should reflect what the user has entered, or the formatted model value.

BREAKING CHANGE:

Always uses the viewValue when validating minlength and maxlength.

Closes #7967
Closes #8811
fix(ngModel): always format the viewValue as a string for text, url and email types

NgModel will format all scope-based values to string when setting the viewValue for
the associated input element. The formatting, however, only applies to input elements
that contain a text, email, url or blank input type. In the event of a null or undefined
scope or model value, the viewValue will be set to null or undefined instead of being
converted to an empty string.
docs($q): fixed spelling, removed extra characters

Closes #8779
docs(FormController): document $submitted property

Closes #8732
docs($rootScope): remove duplicate `$digest()`

Closes #8840
perf(select): execute render after $digest cycle

This is an optimization to defer execution of the render function in the
select directive after the $digest cycle completes inside the
$watchCollection expressions.  This does a check to see if the render
function is already registered in the $$postDigestQueue before it passes
it into $$postDigest, guaranteeing that the DOM manipulation happens
only in one execution after the model settles.

Closes #8825