Added infile to terminal and contextmanager to set it to non-blocking reads
Made root element handle basic IO/loop stuff...

The unit tests don't seem to like how I've split up the context managers, but
it's bed time, and this stuff is vaguely working...
Fix nonblocking_input context manager always to yield safely
Make root element handle screen resize events...

by fully redrawing itself :-)
Added in Input display element which can take and display text input...

it calls back to its associated root element when it's updated so that the UI
is redrawn. This is a *work in progress*! A number of things I want to change
include marking the element as needing update, and then calling update on the
root element, perhaps automatically. (I do want to keep everything event-driven
as much as possible.) I also want to make the Input element have the kind of
placeholder hint text that you get on web forms as an option .
Made terminal colour-retrieval methods return Format objects
Added some more display elements...

A Label, which is a simpler form of a Text element, which doesn't do wrapping,
and a LineInput, which is a single-line input element, which will hopefully be
useful for things like entering commands.
Fixed left and right arrow keys in Keyboard being the wrong way around!

Oops!
Added more fully-fledged input handling to LineInput
Moved input-related classes to their own file
Added unit tests for LineBuffer and LineInput classes...

And *again* found en petit buglette! When will I learn that unit testing is
awesome?!
Made LineInput rendering draw a cursor position
Fix input unit test to cope with new cursor position display...

See, this is what happens when I don't run the tests automatically per-commit
because one is borked! I must find the time to fix it!
Changed updating logic a little...

and made the input element update trigger a general update draw, rather than a
full redraw.
Improved testing of Root.run()...

which included mocking out less stuff, and starting to diagnose why we fail to
run inside the git hook, where stdin is presumably somewhat different to
running the tests in a TTY.
Fix unit tests when running as git commit hook
Merge branch 'input_handling'

Created some input elements, and some basic stuff for processing input.