[BlinkGenPropertyTrees] Minimize damage during layer updates

This change introduces cc::Layer::SetChildLayerList and uses it to
avoid re-attaching all layers every frame when using layer lists. This
is one step closer to sending a layer list to cc instead of a layer
tree.

The primary change is to remove the call to RemoveChildLayers in
PaintArtifactCompositor::Update. Instead of attaching layers to the
root layer incrementally, they are built up using LayerListBuilder and
then set on the root layer in a single step.

This approach revealed some dependencies that are no longer true. Because
the host tracks layers that need to push, it is important that Layer's
host is set prior to calling any Layer setters. Layer::SetElementId only
worked in layer list mode because the Layer's host was not set; this has
been fixed.

Bug: 879650
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux-blink-gen-property-trees;luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I894297dff3c1cdebacb3485abc3bec1d855e9afc
Reviewed-on: https://chromium-review.googlesource.com/1226264
Reviewed-by: enne <enne@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: Philip Rogers <pdr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#593254}
11 files changed