perf(jqLite): only take str.split() path when needed

bda673f8e785f299407c8c45887f37448a0f0192 changed code to only use `str.split()` when necessary,
but the result was that `str.split()` would always be taken unless ' ' was the first character
in the string, negating the effectiveness of the perf fix.

Closes #8648
docs(misc/contribute): fix syntax highlighting of URLS

Closes #8168
Closes #8169
docs($http): correct link to "salt (cryptography)" wikipedia article

Closes #8654
test(benchmark): add jQuery no-op script to large table benchmark
docs($compile): change restrict's defaults to EA

restrict defaults are EA let's update the docs
docs(tutorial/index): improve wording

Removed repetition of 'machine' and 'local machine'.
I think this change makes the sentence more concise
docs(orderBy): clarify expression usage in a predicate

Closes #8592
refactor(isArray): use Array.isArray exclusively

IE9 supports Array.isArray so we don't need a polyfill any more.
perf(jqLite): optimize event handler
perf($compile): don't register $destroy callbacks on element-transcluded nodes

This is a major perf win in the large table benchmark (~100ms or 9).

This cleanup is needed only for regular transclusion because only then the DOM hierarchy doesn't match scope hierarchy
(transcluded scope is a child of the parent scope and not a child of the isolate scope)

We should consider refactoring this further for the case of regular transclusion
and consider using scope events instead.
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.
perF($compile): don't create jq wrapper for linkNode needlesly

when compileNode and linkNode are the same, we can reuse the existing jqLite wrapper.
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
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.

BREAKING CHANGE: element-transcluded directives now have an extra comment automatically appended to their cloned DOM

This comment is usually needed to keep track the end boundary in the event child directives modify the root node(s).
If not used for this purpose it can be safely ignored.
refactor(jqLite): simplify jqLiteAddNodes when multiple nodes are being added

This branch is not as hot as the single node branch and the slice that we need for old webkit/phantom makes for loop preferable.
perf($parse): speed up fn invocation by optimizing arg collection

8-15% improvement for depending on the number of args
refactor($parse): small readability improvements