TextBlock style update 

Hi all,

This one passes tests and I ran through a few samples and it seems to behave as expected!

I did make a bunch of changes that I'll comment on inline which should be reviewed. I'm pretty sure this can be improved in a couple of places but I'm not sure how.

@jasonrclark I'm not sure how this should mix with #832. Based on what I see I think they should play nicely.
Don't know if this is any better, but here's what occurred to me:

```
{
  "Banner" => { size: 48 },
   ...
}.each do |name, styles|
  clazz = Class.new(TextBlock) do
    self.const_set("STYLES", { font: "Arial", fill: nil }.merge(styles))
  end
  Shoes.const_set(name, clazz)
end
```

The hash at the top just gets the name and key values to override for each class.