WIP: remove todo
perf(jqLite): simplify jqLiteDealoc

while querySelectorAll is much more expensive than getElementsByTagName on elements with
both many and few children, cloning the live node list returned by getElementsByTagName
makes it as expensive as querySelectorAll (we need to clone because we need the node list
not to change while we iterate over it).

the childNodes and childNodes.length check is as expensive as querySelectorAll on a node
without any children, so it only makes the whole lookup 2x as slow, so I'm removing it.
WIP: remove todo
perf(ngRepeat): simplify code and remove duplicate array.length access

minimal perf gain (~2ms)
chore(ngRepeat): fix typo in a comment
chore(ngRepeat): improve inline comments
WIP: remove todo
refactor(ngRepeat): simplify previousNode boundary calculation

the previousNode was almost always correct except when we added a new block in which case incorrectly
assigned the cloned collection to the variable instead of the end comment node.
refactor($compile): automatically append end comment nodes to all element-transclusion templates

previously we would do it manually in all of our structural directives
WIP: use document fragments for element transclusion