cc: Replace recorded region with direct map lookup

Resolve conflicts of https://codereview.chromium.org/196343005/
merging to release branch.

Did not resolve conflicts in tests we don't build:
 cc/resources/tile_manager_perftest.cc
 cc/resources/tile_manager_unittest.cc

Bug: 13302269

Original description:
cc: Replace recorded region with direct map lookup

If the viewport is extremely large, then keeping track of the recorded
region in PicturePile with an actual Region becomes extremely slow due
to a large number of rects being inserted into it.

The recorded region behaves as a cache to the picture map; it's a
simpler way to know the state of all of the recordings contained within.

In practice, the recorded region is only used for two things: a "should
this pile bother to create tilings" optimization and a "can a tile be
rastered in this content rect" check aka CanRaster.

The optimization for "should create tilings" is replaced by a
has_any_recordings_ boolean, which could have a false positive in theory
(resizing to a smaller but non-empty size), but which shouldn't happen
in practice. Even if it did, this would only be a performance penalty
for creating no-op tilings that can't create tiles (due to CanRaster).

The CanRaster check is replaced by a viewport hint, as most tiles that
the tiling creates will be inside of the very large expanded viewport
during recording, turning an expensive Region.Contains check to a
Rect.Contains one. In the edge cases where tiles are being created
outside of that expanded viewport, it will check the picture map
directly. This should only happen when the user has scrolled thousands
of pixels without a commit.

BUG=353346
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=256953

Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=257852

Change-Id: I8ed3bbaab8f8b7a72c10fd764d2c3f6331f70ded
12 files changed