Always update every caret after processing a batch of ops

The Caret itself already has logic to only perform expensive updates once per redraw. There is no performance gained by CaretManager duplicating this logic as well.

In addition, bind to any processing batch end. This is because any type of edit may cause the caret to be pushed off screen including adding annotations, splitting paragraphs, deleting text, modifying a paragraph style etc. the most straightforward way to ensure the caret is up-to-date is to check it's visibility on every edit operation.

Fixes #765

Other commits
* Always update caret location even if it isn't visible
* Put caret register/remove functions side-by-side for clarity
* Caret no longer needs to be hidden between redraws
Ah, okay. When doing Ctrl-A I can see the difference. Before I was just trying to select by mouse, and there the view was always scrolled already to where the selection ends.