perf(jqLite): don't recreate the Node.contains polyfill
refactor(jqLite): drop Node.contains polyfill

Node.contains is supported on IE5+ and all the other browsers we care about.
refactor(jqLite): don't recreate mouse event map
refactor(jqLite): remove code duplication
perf(jqLite): don't use forEach in #off

off() is called on each element removal, so we want to make it as fast as possible
perf(jqLite): improve createEventHandler method by switching from forEach to for loop
perf($compile): optimize publicLinkFn
perf(jqLite): optimize event listener registration
refactor(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.
perf(jqLite): optimize jqLiteAcceptsData method

This doesn't show up too high in profiles, but this code is cleaner anyway
refactor(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
refactor: 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)