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.
`dirty_rect` definitely works for me.