fix(ngRepeat): correctly track elements even when the collection is initially undefined

Previously if the collection model was set to undefined on the first digest,
the repeater would get confused and not use the correct tracking function
for associating model with dom elements in the repeater.

Closes #4145
Closes #3964
docs(ngShowHide): improve clarity

Closes #4099
docs(guide/e2e-testing): Fix typo

Closes #4100
docs($http): fix adding default header to get request example

Initially, `$httpProvider.defaults.headers.get` is `undefined`, so
`$httpProvider.defaults.headers.get['My-Header']='value'` will throw an
error.

Closes #4101
docs(guide/$location): clarify $location service role

Clean up confusing use of the term URL to refer to $location as well as 'URL in the browser'.

Closes #4103
docs(guide/$location): provide a title for section about `replace()`

Closes #4104
docs(jqLite): fix typo

Closes #4105
docs(ngHref): fix formatting and clarify

Closes #4106
docs(guide/services): fix typo

Closes #4112
docs(docs.css): prevent `<code>` elements from wrapping

Closes #4114
fix($compile): work around issue in jQuery 1.10.2

jQuery 1.10.2 does not attach data to comment nodes, which previously broke `$compile`.
This changes how elements with "transclude element" and a controller are compiled to
avoid the issue.

Closes #3764
docs(guide/services): fix another typo
feat(browserTrigger): allow support for custom timeStamps in events
fix(ngAnimate): ensure that delays are always considered before an animation closes

Closes #4028
feat(ngEventDirectives): add `ngCopy`, `ngCut`, and `ngPaste`

Closes #4172, #4170
docs(minerr): fix broken style from long line in nonassign
docs(minerr): fix bad line wrap due to errand nowrap in CSS
fix($compile): collect ranges on multiple directives on one element

The problem was in keeping the values of `attrNameStart` and `attrNameEnd` between directive loop iterations which lead to the compiler looking for multi-element ranges for any directives that happened to be in the directive list after one that was applied on a range. For instance, having a ng-repeat-start and ng-class on a single element with ng-repeat being resolved first made the compiler look for an ng-repeat-end for both ng-repeat and ng-class because the `attrNameEnd` was not reset to a falsy value before the second iteration. As the result, an exception saying the block end element could not be found and the second directive was not actually applied.

Closes #4002
feat(docs): linkify error messages on minErr docs pages
fix(jqLite): use get/setAttribute so that jqLite works on SVG nodes

jqLite previously used `elt.className` to add and remove classes from a DOM Node, but
because the className property is not writable on SVG elements, it doesn't work with
them. This patch replaces accesses to `className` with `get/setAttribute`.

`classList` was also considered as a solution, but because only IE10+ supports it, we
have to wait. :'(

The JqLiteAddClass/JQLiteRemoveClass methods are now also used directly by $animate
to work around the jQuery not being able to handle class modifications on SVG elements.

Closes #3858