docs(TRIAGING): Initial doc about triaging issues in Angular
docs(tutorial/step-2): remember to install karma plugins
docs(tutorial/step-3): remember to install karma plugins
docs(tutorial/step-6): remove unused `class="diagram"`

Closes #5197
chore(Scope): short-circuit after dirty-checking last dirty watcher

Stop dirty-checking during $digest after the last dirty watcher has been re-checked.

This prevents unneeded re-checking of the remaining watchers (They were already
checked in the previous iteration), bringing a substantial performance improvement
to the average case run time of $digest.

Closes #5272
Closes #5287
chore($resource): Use shallow copy instead of angular.copy

Replace calls to angular.copy with calls to a new function, shallowClearAndCopy.
Add calls to copy for cache access in $http in order to prevent modification of cached data.
Results in a measurable improvement to the startup time of complex apps within Google.

Closes #5300
chore(Angular.js): Use call and === instead of apply and == in type check functions

Updates isDate et al to use call instead of apply and === instead of ==.
The change to call brings minor performance improvement and === is just
better practice than ==.
http://jsperf.com/call-vs-apply-tostring

Closes #5295
fix(isElement): return boolean value rather than `truthy` value.

angular.isElement currently returns a truthy object/function, or false. This
patch aims to correct this behaviour by casting the result of the isElement
expression to a boolean value via double-negation.

Closes #4519
Closes #4534
fix($compile): update cloned elements if the template arrives after the cloning

If an element has a directive whose content is loaded using `templateUrl`,
and the element is cloned using a linking function before the template arrives,
the clone needs to be updated as well.

This also updates `ngIf` and `ngRepeat` to keep the connection to the clone
of a tranclude function, so that they know about the changes a directive with
`templateUrl` does to the element in the future.

Fixes to #4930.
docs(CHANGELOG): add v1.2.4 changes
chore(release): cut 1.2.4 wormhole-blaster release
revert: chore($resource): Use shallow copy instead of angular.copy
revert: chore(Angular.js): Use call and === instead of apply and == in type check functions
chore(CHANGELOG): remove reverted commits from 1.2.4
chore(release): start 1.2.5 singularity-expansion iteration
feat(jqLite): implement the `empty` method

jQuery's elem.html('') is way slower than elem.empty(). As clearing
element contents happens quite often in certain scenarios, switching
to using .empty() provides a significant performance boost when using
Angular with jQuery.