split out the TextBlock and the Cursor

Into its own header.

This is not totally kosher because plex is only processing main.cpp so
we are reliying on texto.h not introducing new plex entities.
add a scale factor

ctrl + mousewheel zooms in our out and a scale_ variable holds the
current scale.  The scale is applied with center at (width/2, 0).

the title gets updated to show the current scale. which is applied
pretty much to everything except the title piece and the widgets.

The cursor hit testing with mouse is not updated yet and there is a hack
for |v_max| so we render more.
zoom fixes

1 - the scale transform is centered in the left margin, which is way
more useful for zoom in.
2- the debug rectangles stroke size changes with the scale factor so it
is always visible.