Made Format objects inherit from a more generic LazyLookup class...
Considerable refactor of Format, Terminal and update handling...

Yes, I know, commit small and often! I just seem to keep getting myself stuck
down rabbit holes. This particular rabit hole involved:

 - Making default formatting of elements handled more consistently (instead of
   just passing through a string, we pass through format objects, which will
   pave the way for doing more dynamic behviour, like styles)
 - Stopped elements being associated with terminal objects - they will be
   passed a terminal when they need to draw to it. This came about because I
   didn't to have to keep a terminal attribute up-to-date on each element
   alongside the root element attribute, but I didn't want to have to lots of
   side effects in tests with adding things to a Root object just to get output
   to go where I wanted.
 - Added a unit test to check that the element update logic works ok
 - The terminal now resets styles to its normal one in between draw operations,
   so that if no default_format is specified for the next draw operation that
   element will not be coloured with the old default style (this fixed the
   zebra after my other changes)
Modified Format repr...

It was irking me that what I typed in the interpreter to make the thing
differed from the repr.

Also moved a bunch more stuff into the base class
Added an example of default formatting
Made element drawing operations return list of new Block objects...

I'd ummed and ahhed about this a while ago, but implemented it now because it
was seeming silly to pass a Terminal object all the way down from the root
element just to get the children to call it back to draw themselves. Now, the
children provide all the information required up to root, which takes care of
the drawing.

This also means that it's much nicer to unit test, becuause we can intercept
the draw information, rather than having to mock out stuff to catch
side-effects.