Reduce visible caret flicker when caret transitions from large to small

There are significant performance costs with calculating the caret
size, so still want to avoid computing this until all ops have been
performed. However, if the caret size is wildly incorrect for it's new
position after an update (e.g., caret moving from beside an image to
beside text), the caret will be user visible before the render occurs,
and results in a large caret momentarily flashing before shrinking to
an appropriate size. To prevent this flicker, we hide the caret until
it is redrawn, as an absent caret is far less noticeable than an
oversized one.
Merge pull request #369 from peitschie/reduce-caret-flicker

Reduce visible caret flicker when caret transitions from large to small