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
Yes, that is what I was initally wondering about (stopped reading at first of || items). Somehow I think that if the caret (so the indicator of interactive editing) was explicitely hidden, then the view does not need to update to the changes of its position. But not yet sure what all is triggering `state.isShown` to be false.