Allow paint invalidation containers to cross frame boundaries. (re-land #2)

The previous commit was rolled out because it did not make the required changes
to PaintInvalidationState in order to teach it how to cross frame boundaries.

Previously, the *actual* paint invalidation container, meaning the enclosing
compositing layer / root RenderView, could already have been across a frame boundary.
The logic to do this correctly was done via special code in RenderView.

Instead, generalize the existing mechanisms to find a paint invalidation container
and map rects to repaint container coordinate space to cross frame boundaries.
This simplifies the code, and also causes paint invalidation rects to always be stored
in the coordinate space of their graphics layer backing. The latter is important if we want
to use these rects for determining which parts of a graphics layer need to be painted.

BUG=

Review URL: https://codereview.chromium.org/482063005

git-svn-id: svn://svn.chromium.org/blink/trunk@180736 bbb929c8-8fbe-4397-9dbb-9b2b20218538