perf(jqLite): refactor jqLiteExpandoStore to minimize access to expensive element.ng339 expando property
perf($compile): clone the nodeList during linking only if necessary
perf(jqLite): optimize off()

'for in' is much faster than Object.keys() and since the events object is ours, we know
that we don't need to worry about prototypically inherited properties so we can skip
expensive hasOwnProperty check.

http://jsperf.com/for-in-vs-object-keys2
perf(ngRepeat): clone boundary comment nodes

http://jsperf.com/clone-vs-createcomment

most of the improvement comes from not reconcatinating the strings
perf(ngRepeat): move updateScope fn to factory and reuse it for all repeaters
perf(ngRepeat): move work to compile fn

this has impact only on nested repeaters where the number of columns is significant
style(ngRepeat): ws and indentation fixes
perf(ngRepeat): use no-proto objects for blockMaps
perf(ngRepeat): optimize marking of nodes that are being removed via an animation
perf(Scope): exit $broadcast early if nobody is listening for the given event
perf($parse): use no-proto maps as caches and avoid hasOwnProperty checks
chore(test): rename getBlockElements to getBlockNodes in .jshintrc for tests