cc: Introduce embedded_surfaces in metadata for surface Ids in draw quads

cc::Surface and SurfaceDependencyTracker used CompositorFrameMetadata's
referenced_surfaces to determine dependencies of a CompositorFrame. This
causes issues when referenced_surfaces contains surface IDs of hidden
windows. Hidden windows do not generate CompositorFrames and so the
parent CompositorFrame would block for four BeginFrames waiting for a
child CompositorFrame that would never arrive.

This effectively reduced the frame rate from 60fps to 15fps. This
CL addresses this issue by introducing an embedded_surfaces set in
CompositorFrameMetadata that only refers to surface IDs for which
SurfaceDrawQuads were generated and thus will be visually present
in the frame.

In a subsequent CL, referenced_surfaces will be renamed to
retained_surfaces and will only contain the set of surface IDs to
which the parent wishes to retain the corresponding surfaces but does
not embed them in SurfaceDrawQuads.

Once generalized frame eviction is complete, we can drop the
retained_surfaces field all together.

BUG=672962
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2803913004
Cr-Commit-Position: refs/heads/master@{#462935}
diff --git a/cc/layers/surface_layer_impl.h b/cc/layers/surface_layer_impl.h
index a5bb8c5..9b853df5 100644
--- a/cc/layers/surface_layer_impl.h
+++ b/cc/layers/surface_layer_impl.h
@@ -50,7 +50,8 @@
   SurfaceDrawQuad* CreateSurfaceDrawQuad(
       RenderPass* render_pass,
       SurfaceDrawQuadType surface_draw_quad_type,
-      const SurfaceInfo& surface_info);
+      const SurfaceInfo& surface_info,
+      std::vector<SurfaceId>* embedded_surfaces);
 
   void GetDebugBorderProperties(SkColor* color, float* width) const override;
   void AppendRainbowDebugBorder(RenderPass* render_pass);