Avoid unnecessary buffer requests

Now that layers can mask their children, we should avoid issuing buffer
requests for areas outside of the mask region. At the same time, layers
can now be positioned and sized so that they do not intersect with their
parents at all. In those cases, we still need to issue buffer requests
for the layers even if their parents do not intersect the redraw region.
It seems to be similar to this bug: https://github.com/rust-lang/rust/issues/16822. What happens is that if I try to assign the first intersection to a variable, I get this error:

```
Could not compile `compositing`.

--- stdout
task 'rustc' failed at 'assertion failed: `(left == right) && (right == left)` (left: `21`, right: `0`)', /home/larsberg/rust/src/librustc/middle/ty.rs:2619
```