Fix children transform layer

My previous fix for this problem was not correct. The
old approach had been to monkey with the anchor point of
whichever layer was applying the "sublayer" transform
(i.e., perspective). Turns out what I really needed to
do was understand how the perspective transform was
calculated. Looking at RenderLayer::perspectiveTransform,
we compute a transform that's tailor made for a layer with
same size as:
toRenderBox(renderer())->pixelSnappedBorderBoxRect()

This was not done with m_childrenTransformLayer. Instead,
I'd copied the dimensions of the m_graphicsLayer which
can be be different for a variety of reasons. You can
mitigate this with anchor points, but this doesn't play
nicely with anchor points that are explicitly set, leading
to subtle bugs such as these.

If I change the size of m_childrenTransformLayer to match
the layer size it was constructed to work with, it
unsurprisingly does what it's supposed to. I've added two
new layout tests to capture the cases where we explicitly
set an anchor point and should not affect perspective.

Actually, that's not quite the whole story. Not only does
the child transform layer need to be sized appropriately,
it also needs to be positioned. It can happen that the
contents of a composited layer are offset from its
composited bounds (due to, say, a border). In this case,
an offset needs to be applied to the child transform in
order for the perspective origin to be positioned
correctly. Additionally, the composited layer _below_ the
child transform layer needs to know that this offset has
been applied so that it doesn't apply a double offset.
Similar logic exists in the CompositedLayerMapping to
account for the position of the childContainmentLayer
(i.e., the child clipping layer). This functionality is
tested by:

transforms/3d/general/transform-origin-z-change.html

Note:

We need two so that we cover both the case where we use
m_childTransformLayer (because we had no other graphics
layer in the CompositedLayerMapping to house the
perspective transform), and the case where we do have such
a layer (specifically, the m_childContainmentLayer --
the "clipping" layer -- that's used when overflow:hidden
is set).

BUG=356300

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

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