Redraw minimum number of lines

I reintroduced `computeIntactRanges` and use the intact ranges to redraw just what's necessary. If needed last frame canvas is sliced and copied to the new canvas in several parts, then missing lines are redrawn like before.

I renamed renderFrom/renderTo to firstRow/lastRow for consistency with current canvas code. Might need to find a clearer name.

Might need more extensive checking, but it seems to work pretty well for several use cases: scrolling, editing one line, cut and paste, code folding, multiline editing, and commenting large section of code.