Draft of block-based layouts

Taking a stab at block-based layouts for YOLayout. Instead of implementing layout:size:, views instead specify a layout block that does the same thing. The advantages are

* You don't need to maintain references to your subviews just for layouts
* You can potentially build a view hierarchy without subclassing views.

One design decision that I'm still on the fence about was adding a convenience method `setLayoutBlock` to YOView. Not sure if this adds much. With the convenience method, you define a layout block like this:

    [self setLayoutBlock:^(id<YOLayout> layout, CGSize size) {

Without it you'd do this:

    self.layout = [YOLayout layoutForView:self layoutBlock:^(id<YOLayout> layout, CGSize size) {

Because autocomplete is so good in XCode not sure if much is gained from the first part. Looks simpler, but maybe makes the layout system a little more opaque in how it works. I go back and forth on this.
I think this assert can be removed because you can't have a layout instance without a block anymore... ie. It's impossible for this assertion to fail?