docs($rootScope): fix incorrect docs about how dirty checking is done
chore(shallowCopy): handle arrays and primitives, and switch to using it where possible

In many cases, we want a shallow copy instead of a full copy

Closes #7618
fix(angular.copy): support circular references in the value being copied

Closes #7618
fix(ngClass): support multiple classes in key
feat($compile): isolate scope properties in controller context via controllerAs

It is now possible to ask the $compiler's isolate scope property machinery to
reference properties by their isolate scope.

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

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

The putting of properties within the context of the controller will only occur if
controllerAs is used, and the @-prefix is kind of a gross sort of magic.