[BlinkGenPropertyTrees] Stop incorrect clearing of property tree changed

PaintPropertyTreeNode::Changed is used for in-layer raster invalidation,
and cc damage for both SPV2 and BGPT. https://crrev.com/606472 failed
to account for the case when non-transient paint controllers in
GraphicsLayers would clear property tree changed values before the
values could be used for damage.

As a reminder, with BlinkGenPropertyTrees, each GraphicsLayer keeps a
non-transient paint controller, and at the end of painting a transient
paint controller is created and each GraphicsLayer's cc::Layer is
inserted as a foreign layer into the transient paint controller.

This patch changes BGPT to clear all property tree changed bits after
damage has been calculated in PaintArtifactCompositor. It is implemented
with a recursive walk of the GraphicsLayer tree.

Bug: 899628
Change-Id: Ibc7d65d6ab8875508b9c3dd18ab6db1230bf1308
Reviewed-on: https://chromium-review.googlesource.com/c/1327804
Commit-Queue: Philip Rogers <pdr@chromium.org>
Reviewed-by: Xianzhu Wang <wangxianzhu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#606874}
8 files changed