Compute incremental updates in the Textconsole

We should now be able to simplify the rendering loop.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Fix a cursor position calculation

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Improve the use of the cell -> coordinate cache

For every cell contents, we attempt to remember a single
co-ordinate that can be used as a Copy source. We only
need to invalidate this mapping for a cell when we are
changing the co-ord it points to to different contents.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Fix scrolling calculation error

Scrolling by +1 lines means subtract -1 from each row number.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Simplify the rendering loop

There's no need to detect when we can use a CopyRect: we'll be
provided an explicit Copy drawing operation from the backend.

Signed-off-by: David Scott <dave.scott@eu.citrix.com>
Remove dead code

Signed-off-by: David Scott <dave.scott@eu.citrix.com>