Auto merge of #3467 - gw3583:less-evicts-3, r=bholley
Auto merge of #3467 - gw3583:less-evicts-3, r=bholley

Retain tiles just outside the viewport a bit longer.

Expand the size of the needed region that active tiles exist
over. This means that as tiles get scrolled just in / out of
the screen we retain them for a bit longer.

Since we only support a single dirty rect (for now), this is
helpful for avoiding the case of creating a large dirty rect
when something in the middle of the screen is animating while
scrolling. In future, once multiple dirty rects are supported,
it will be far less important to retain tiles outside the
viewport.

Also fix a subtle bug with the descriptor dependencies where
clipped out primitives would invalidate the tile due to changing
the length of the descriptor needed_rects array.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/webrender/3467)
<!-- Reviewable:end -->

servo/webrender,servo/webrender,servo/webrender,servo/webrender,servo/webrender,servo/webrender