Calculate caret display from closest STEP rather than closest sibling

The caret display position is tied to the ClientRect of the associated cursor's text content, which is usually found to the left of the cursor.

Using a step iterator ensures only steps within the same root as the cursor are considered, preventing issues such as #260 & #559.

Another side-effect of this change is that for the first time ever, the caret will display correctly over wrapped whitespace!