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.