Bug 537825 - Text cursor not erased when moved to new position

When we repaint and the cursor is visible, draw the cursor to the
main cairo context we are using, rather than separately. This makes
sure that we draw the cursor on top of the content and clipped to
the redraw area, and thus preserve the shown/hidden state properly.

Some combination of redraw ordering or drawing outside the clipped
area caused the shown/hidden state of the cursor to be flipped
on redraw, causing a left-over cursor on next cursor move.