[BlinkGenPropertyTrees] Record link highlights as foreign layers

This patch makes link highlights draw using foreign layers. To achieve this,
link highlights have been more tightly integrated into the blink lifecycle.
There are five big changes:

1) With BlinkGenPropertyTrees, link highlights paint above all other content
and without inherited effects. This will be better UX, and it resolves an
issue where link highlight painting could change painting in a subtle way.

2) Link highlight animations require an effect paint property node so a new
effect node is now created/updated on LayoutObjects that have link highlights.
When link highlights are added or removed, we now mark the associated layout
object as needing a paint property update.

3) LinkHighlights::UpdateGeometry has been moved from
WebViewImpl::UpdateLifecycle to LocalFrameView::PaintTree. This ensures link
highlight layers are created/updated before the drawable layers are collected.

4) CollectLinkHighlightLayersForLayerListRecursively now collects link highlight
layers, associates them with the link highlight effect node, and creates foreign
layers for them. Because there can be multiple highlights, LinkHighlight has
been made a DisplayItemClient to ensure the foreign layer ids are unique.

5) LinkHighlightImplTest has been parameterized to run with and without
BlinkGenPropertyTrees which required some refactoring to ensure the test
teardown occurred while the BlinkGenPropertyTrees setting was in scope.

This change does not remove the GraphicsLayer dependency of the link highlight
implementation, which will be required for SPV2, but it moves the implementation
much closer to a SPV2-compatible design.

BUG=857501

Cq-Include-Trybots: luci.chromium.try:linux-blink-gen-property-trees;luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I8ed54a56b4cb23ae581e8a848db921baf09afcce
Reviewed-on: https://chromium-review.googlesource.com/1125295
Reviewed-by: Tien-Ren Chen <trchen@chromium.org>
Commit-Queue: Philip Rogers <pdr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#577431}
22 files changed