Relative dimension support

WIP for resolving issue #380. The Dimensions class needs an update to draw the width and/or height from the parent, which now needs to be passed in to work properly.

For the time being I've chosen to make it graceful if an object doesn't pass the parent, but this might not be necessary once all the DSL elements properly support the parent.

Questions I've come up with:

* Is there a more elegant way of doing this in the `initialize` methods? I don't see it straight off, but I feel like there ought to be.
* Should the `Slot` class use the Dimensions support so it doesn't have to duplicate the calculation I poached from there?

Keen to hear any other thoughts/opinions on how this should look since I'm very new to the shoes code.