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.