Array transforms

With this pull requests, manipulations on collections cause only the elements which actually require changing to change. This should be hugely more performance for large collections. In order for this to work we calculate a set of operations which transform one array into another and then apply this to the DOM.

@Burgestrand, @cjse et al. please review this and give some feedback if it seems sane.

I still need to try this out on an actual application, as well as benchmarking how well it performs.