Add DisplayScheduler for Surfaces

This uses a SyntheticBeginFrameSource and a
BeginFrame + deadline to determine when to draw.

A heuristic is used to detect currently active
surfaces that we want to wait for.

Future patches will put this in charge of sending
BeginFrames to surface producers, avoid using a
heuristic to detect currently active surfaces, and
more reliably inform producers of their latency.

BUG=467750
CQ_INCLUDE_TRYBOTS=tryserver.blink:linux_blink_rel

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

Cr-Commit-Position: refs/heads/master@{#331037}
16 files changed