Functions to initialize the screen structure, flush the screen state to
the terminal and draw a diagonal line.

Going forward I think I would like to have two different types of
operations which can be used to edit the screen state. Operating on the
buffer for the screen directly (possibly as a matrix) and then flushing
the entire change (redrawing the whole screen), or doing local edits
which get pushed out one-by-one and the state gets updated as they
happen. This can be seen I suppose as acting on the buffer and having
the screen change has a side effect or operating on the screen and
having the buffer change as a side effect. Ideally I want to support
both of these types of operations in a manner that they can work
together.