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 I could have one more wish - and I know I take plenty of those on code style - I'd see that each if here gets its own method. It does two separate things which are then better to distinguish and makes for a shorter method, imo. Not feeling strongly about it, just a general rule of thumb kicking in :)