perf: speed up shallowCopy and special case Attributes cloning

`for in` is much faster than `Object.keys()` but `for in` includes properties from the prototype.

http://jsperf.com/for-in-vs-object-keys2

All the uses of shallowCopy don't deal with objects with heavy prototypes, except for Attributes instances
in $compile.

For this reason it's better to special-case Attributes constructor and make it do it's own shallow copy.
This cleans up the Attribute/$compile code as well.
refactor: remove unused variables
perf($compile): delay object initialization in nodeLinkFn
style(ngRepeat): fix indentation
fix($parse): remove unused variable declaration in generated getters
style($parse): rename variables in generated code so that code is more readable
perf($parse): trim expression only if string
refactor($parse): simplify addInterceptor fn
refactor(Scope): rename $$childScopeClass to ChildClass to simplify debugging/profiling
refactor(Scope): remove useless compileToFn helper fn
refactor(jqLite): clean up jqLiteRemoveData fn
style(jqLite): rename onFn to jqLiteOn
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