Major changes to how things are drawn!...

The main reason for this is to allow for dynamically drawing sections of the UI
on demand at a later stage, rather than continually drawing the entire thing by
passing characters up the UI element tree.

The main changes:
 - Changed what it means to do a 'draw' operation on an element, which now
   differs between display elements (which draw their contents to a portion of
   the screen) and container elements (which just delegate draw operations of
   their children as appropriate).
 - To faciliate element drawing I've added a draw_block() method to a
   blessings.Terminal child class (this also makes unit testing much nicer)
 - I've also changed quite a lot of how the layout code works, including using
   two rounds of cropping so that the content of an element is cropped to size
   according the bounds the element specifies (which makes the elements
   internal alignment good) and then the element is positioned within its wider
   context correctly. As an example, consider a stack of elements that is
   bottom aligned but will get cropped at the top of screen. The content of the
   top element needs to be aligned to the top of the full height of that
   element, but we then need to crop it down to the available space at the top
   of the screen (with a different alignment).

Other changes include:
 - Removing alignment enums - they were proving to be harder to write than any
   benefit they seemed to be providing
 - Doing early sanity checking on alignment so that clients get alerted early
   if they naff up setting an alignment
 - Making size constraints not required for every element, but simply
   defaulting them to None