[PATCH] Fix problem with disappearing Row objects

It appears that row objects can disappear when doing a decoration update for
 example. This means that comparing row pointers is not a good idea, because
 they can change without notice.

In this patch, a row is identified by a CursorSlice that points to the
 beginning of the row. The Cursor members are modified correspondingly.

Then, using this new framework, a few fixes are made:
- remove early return in checkLeftEdge
- force update also if the previous row needs to be repainted
- remove places in Cursor code where left_edge was reset to 0 explicitly