Makes tile-creation lazy

This cl contains quite a few changes.  I'll try to enumerate all of them here:

1) Some cleanup of the PictureLayerTiling definition (moved all members to the bottom and sorted them by lifespan)
2) Added painted_rect to Tile.  This allows us to determine quickly if a new tileing can use an old tile (if the required painted rect is contained within the old painted rect).  This lets us re-use partially painted tiles when the layer-bounds shrinks but nothing else changes.
3) Added an interest_rect field to PictureLayerTiling (we should determine if this is redundant with last_interest_rect
4) Added a new constructor to PictureLayerTiling for the sake of lazy cloning.  This constructor copies another PictureLayerTiling but does *not* copy the tiles or interest_rect.  The copy occurs lazily.
5) Added a ManageTiles function that creates all of the tiles required for a layer from its interest rect.  It's interfact takes both the new and old rects, which isn't really required and could be changed if desired.  This function deletes tiles outside of an old interest rect and adds tiles from the new interest rect.
6) Changed the definition of CreateTile to lazily pull from where it can.  It no longer assumes we don't already have a tile for that I,J location.  It first checks to see if this tiling already has a tile that has a big enough paint rect.  If it doesn't, it checks its sibling for a tile in that I,J to see if it has a tile with a big enough paint rect, if not it creates a new tile.
7) Added two functions to the layer client, one lets a Tiling get its sibling and one gets the layer's invalidation.
8) Added a SimpleIterator class to iterate over a rectangular region.  This iterator is substantially simpler than the current iterator and only has the functionality requried to iterate over a rectangle.  We should probably rename SimpleIterator to RectIterator and Iterator to CoverageIterator because it's really part of the coverage algorithm.

There's probably a few more tweaks here and there and names/APIs are final but I wanted to put this up for review now that it appears to work.

BUG=190816

Review URL: https://chromiumcodereview.appspot.com/12865017

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193762 0039d316-1c4b-4281-b951-d872f2087c98
13 files changed