I'm actually a little confused now about what happens with moves and how that interacts with deletes. It seems like we generate a move at the point where we see the node in the new tree, which seems fine. But it seems like we don't actually generate a delete at the point where we see the node in the old tree. So that means that (1) `rememberNodes` seems superfluous currently, but even worse, (2) it might be possible that some edit position for a later sibling will get incorrectly interpreted, because the moved node will still be in the (browser) tree while edits to its later siblings are being processed.

Also, I'm not clear on how that would be affected if we encounter the reparented node in the new tree before we encounter it in the old tree. Are we sure that the edit order is correct? (And if we do change things so we generate a delete when we encounter it in the old tree, that could complicate the edit order as well, although I suspect that's fairly easy to solve--if the delete happens after we've reparented it in the browser, we can just treat it as a no-op.)