chore(jqLite): remove legacy code to support IE8 and older
perf(jqLite): don't register DOM listener for $destroy event

This even is fired purely within jqLite/jQuery so it doesn't make sense to register DOM listener here.

6% improvement in large table benchmark for both creation and destruction
perf(jqLite): optimize append() and after()
perf($compile): optimize nodeLinkFn

Functions with try/catch block can't be optimized, so we can
move the try/catch block into a tiny fn and make it possible for the
complex nodeLinkFn to get optimized.
WIP: add bp
perf(jqLite): optimize jqLiteAcceptsData method

This doesn't show up too high in profiles, but this code is cleaner anyway
chore(ngRepeat): name anonymous transclude callback for better debugging
refactor(ngBindHtml): improve readability of the code
style(ngBind): name anonymous link fn to ease debugging/profiling
chore: rename getBlockElements to more correct getBlockNodes
refactor: simplify trim fn now that IE9 has String#trim
perf(jqLite): don't check isString many times in constructor

Note: no significant perf gain in Chrome
style(jqLite): remove MiskoCode(tm)
refactor(jqLite): don't look up the entry needlessly
perf(jqLite): don't use String#split in on() unless we need it
perf(jqLite): microoptimization in chaining fn

note: no siginificant difference observed in macrobenchmarks, so this is just to make
me feel better :)
refactor(shallowCopy): microoptimization
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.
chore: remove unused variables
perf($compile): delay object initialization in nodeLinkFn