Limit parent-dimensioned elements to their parent's bounds

Part of #874, I noticed that backgrounds weren't respecting their parent's boundaries.

With this sample app:

```
Shoes.app do
  @s = stack height: 250, width: 250 do
    @b1 = background red, width:250
    @b2 = background blue, width: 300, height:300, top: 50
    @b3 = background green, width: 100
  end
end
```

On master you'd get this result:
![image](https://cloud.githubusercontent.com/assets/130504/5422841/7221c8d8-824e-11e4-99f6-05c6938729a9.png)

On this branch with the fix, you get this instead:
![image](https://cloud.githubusercontent.com/assets/130504/5422843/8b3ec8c0-824e-11e4-9839-e819994a2be3.png)

To be honest, I'm not 100% sure if this is pixel-perfect on the boundaries, but it's definitely a lot better. Not a huge fan of the complicated `extent` override as it stands, so open to any suggestions for simplifying it.
If you want to take margins into account you probably need to replace all `parent.absolute_end` with `parent.element_end` :) Also probably replace `absolute_start` with `element_start`.

And from my style this is a place where I tend to like to use `self.element_start` - might be me but until I noticed the missing receiver I was thinking we substract `parent.absolute_start` from `parent.absolute_end` and thought we might as well just use `extent`. But, I'm tired :)