Items to insert after the removals, front to back: insert each item at index to, in order.
Every item that is in both arrays, but at a different index.
Items to reposition after the additions, in order: take the item at move_from out of the
array, then insert it at insert_at. from and to are the item's indices in the old and new
arrays (from is undefined for an item that was just added).
Items to remove, back to front: remove the item at each from index, in order.
An edit script that turns one array into another. Applying
removed, thenadded, thenmoved(each in order) to the old array produces the new one. Seecjs.arrayDiff.