Started move towards making terminal even less aware...

of Format/Style objects and really just deal with strings and drawing them to
the right places.
Improve repr of Block objects
Refactor element drawing/formatting code...

This is quite a big one, partly because unpicking things started to have
knock-on effects! Headlines:
 - Made Terminal less 'smart' (i.e. more like the original blessings') so that
   drawing a block really is now just printing out a bunch of lines in the
   right places. It no longer knows about changing defaults for what 'normal'
   is.
 - Made elements pass back up their data to draw again, so that they don't need
   handles to terminal, styles and what have you - that's all now handled by
   whichever element ends up being at the top of the tree and having draw() or
   update() called on it. The abstracted out methods for just getting all the
   data to draw are currently called get_all_blocks() and get_updated_blocks()
   respectively.
 - Tried to consolidate all of the escape sequence resolving or 'populating'
   code in one place, on StringWithFormatting. It's getting there.
 - Made the Root 'element' actually an element, which merely handles draw() and
   update() calls a little more cleanly than a regular element, and provides a
   neat place for users to build Format and Style objects from.
Rename LazyLookup to Placeholder...

It's more descriptive of what it's for and less of how it works.
Fix default formats...

I made one change too many in the unit tests!
Massive, massive, massive refactoring of how formatting code works!...

WARNING: the tests don't quite pass, there are some old formatting unit tests
which I haven't disposed of yet, and the API isn't quite how I'd like it yet.

Headlines:
 - Added more classes in formatting.py to deal with some concepts of
   StringWithFormatting objects more explicitly (they may end up going away
   again, but help in the interim with working out the details of all the
   problems)
 - Placeholders are now more lightweight
 - There's an interim 'StringComponentSpec' class, which forms the base unit of
   StringWithFormatting
 - StringWithFormatting is now a slightly more lightweight container, that has
   different containment logic, which has hopefully made it simpler
 - This meant word wrapping needed to be tweaked, as we no longer get presented
   with a single stream of 'character' data from a StringWithFormatting
 - The API currently only supports doing things like Root.format.blue('word'),
   not Root.format.blue + 'word', because it made things simpler. I plan to add
   some flexibility back right away.