perf: use faster check for $$ prefix

Use two calls to charAt instead of substr to detect a $$prefix in the shallowCopy functions.
This makes shallowCopy 25-50% faster (depending on which browser is used).
http://jsperf.com/angular-shallow-copy

Closes #5457
docs(bootstrap-prettify): fix $timeout issues and update related docs

End 2 end tests wait for all `$timeout`s to be run before completing the test.
This was problematic where we were using timeouts that restarted themselves because
there would never be a point when all timeouts had completed, causing the tests to hang.

To fix this $timeout had been monkey-patched but this caused other issue itself.

Now that we have $interval we don't need to use $timeout handlers that re-trigger the $timeout
so we can ditch the monkey-patch.

This commit tidies up any examples that are using this approach and changes them to use $interval
instead.

Closes #5232
chore($sniffer): make android variable public
fix(input): do not hold input for composition on android

Workaround for chrome for android until #2129 is ready.

Closes #5308, #5323
docs($compile): fix param name and improve example variable name

Closes #5310
docs(error/noregexp): fix link to ng-pattern

Closes #5313
docs(contribute): you may need sudo to install globally on unix systems

Closes #5318
docs(tutorial/step_11): fix indenting in an example

Closes #5322
docs(guide/directive): improve access to isolate scope information

Closes #5329
docs(ngInit): fix typo

Closes #5343
docs(tutorial/step-5): fix typo

Closes #5347
docs($resource): fix typo in server response example

The server is supposed to return the same card number as in the client request.
Adjust server response example to the value given in the client request.

Closes #5352
perf(compile): add class 'ng-scope' before cloning and other micro-optimizations

Add class ng-scope to dom nodes during directive compile rather than link.
Optimize handling of nodeLists.
This results in a savings of about 130ms during the startup of a product within Google.

Closes #5471
perf($parse) use a faster path when the number of path parts is low

Use a faster path when the number of path tokens is low (ie the common case).
This results in a better than 19x improvement in the time spent in $parse and
produces output that is about the same speed in chrome and substantially faster
in firefox.
http://jsperf.com/angularjs-parse-getter/6

Closes #5359
fix(closure): add type definition for Scope#$watchCollection

Closes #5475
fix($location): parse xlink:href for SVGAElements

Before this fix, the xlink:href property of an SVG <a> element could not be parsed
on click, as the property is an SVGAnimatedString rather than a DOMString.

This patch parses the xlink:href's animVal into a DOMString in order to prevent
an `Object #<SVGAnimatedString> has no method 'indexOf'` exception from being thrown,
and also to update the location if necessary as expected.

Closes #5472
Closes #5198
Closes #5199
Closes #4098
Closes #1420
docs(guide): fixed *off typo in angular.injector example comment

Closes #5441
fix(forEach): allow looping over result of querySelectorAll in IE8

In IE8 the result object
of calling `node.querySelectorAll` does not have a `hasOwnPropery`
function. However, it should be usable with `forEach`.

Related to #5400.
fix($log): should work in IE8

In IE8, reading `console.log.apply` throws an error.
Catching this errow now.

Fixes #5400. Fixes #5147.
fix($parse): return 'undefined' if a middle key's value is null

Prior to this fix, $parse/$eval would return 'null' if a middle key in
an expression's value is null, when it should be expected to be undefined.

This patch tries to remedy this by returning undefined for middle values in
expressions, when fetching a child of that null value.

For example:

```js
// Given the following object:
$scope.a = {
  b: null
};

// $scope.$eval('a.b.c') returns undefined, whereas previously it would return null
```

Closes #5480