#259 - Optimize compareArrays in preparation for adding support for move detection.

This new code is faster and smaller, and passes all specs.
#259 - compareArrays now finds and reports moved entries.

The returned "edit script" is backwards compatible because moved entries still include "deleted" and "added" entries. To indicate where they moved to/from, they will now also have a "moved" property.

Added and deleted entries will also have an "idx" property that's needed for the move detection code. We could remove the property afterwards, but that would hurt performance a bit (and add code). The only problem with the extra property is the need to modify the specs since they don't tolerate extra properties.

One of the existing specs already has an entry that triggers the "moved" detection, so I modified it to match the new behavior. Also I added a spec to demonstrate how compareArrays handles an array changed to completely new items.
#259 - Finally, modify setDomNodeChildrenFromArrayMapping to handle moved items.

Some other minor changes to setDomNodeChildrenFromArrayMapping benefit size and performance slightly.
Modified an existing spec to show that moved items don't trigger any new mapping or callback calls.
Added $element pseudo-variable that allows accessing the current element (and through it the DOM tree).
#259 - Change idx to index in compareArrays. Set a limit to the comparisons in the move detection algorithm.
Made chaining possible on writable computed's
#489 - spec for chained computed writes
#316 - isWriteableValue will match any string that ends with a property accessor.
In preProcessBindings, ensure that property writers don't cause an error if the value isn't actually writable (because it was a false-positive match).
Minor spec tweak to ensure all assertions are run on old browsers (without Object.keys) too
"foreach" and "template" bindings accept "as" option to define alias for iteration variable (for #465)
Rephrase specs so they can pass on IE7 too
support beforeMove and afterMove callbacks in setDomNodeChildrenFromArrayMapping
fix specs randomly failing in Chrome
minor optimizations to setDomNodeChildrenFromArrayMapping
Template binding will also use 'as' option if 'data' is given; move data model alias logic to bindingContext.
Merge pull request #606 from SteveSanderson/465-foreach-named-iteration-variable-alternative-impl

"foreach" and "template" bindings accept "as" option to define alias for...
Allow newlines in virtual element syntax
Fix new spec so it works in IE. Ensure virtual elements with newlines work in rewritten templates: requires fix for #494 also.
Merge pull request #279 from SteveSanderson/279-newlines-in-virtual-elements

Containerless control comments with line-breaks are not recognized.