give more information for unknown escape sequences
handle arrow keys
fix underlining
flush when we're about to read, not every time we write
always reposition the current point before drawing
handle \e[0;0H properly
this should actually be using cairo_surface_flush
just use a normal image surface for now

using a similar image surface was causing drawing calls to block
sometimes