Add mojo interface for vsync parameter updates.

Exo observes vsync parameter changes for the primary display and sends
updates over the wayland protocol to arc++. This allows arc++ to produce
frames at the correct rate and time. Currently exo adds an observer to
CompositorVsyncManager. This works because vsync parameter updates are
forwarded back from the GPU process to ui::Compositor without OOP-D.

With OOP-D enabled the BeginFrameSource is moved into the GPU process.
ui::Compositor is no longer involved in setting vsync parameters and
CompositorVsyncManager no longer works.

Add a new mojo interface that exo can subscribe to vsync parameter
updates on. Move the logic to throttle sending vsync parameter updates
out of exo and into the sending end of the mojo interface. This will
limit the number of IPC messages. The throttling is improved slightly by
handing modulus roll over when the timebase is near a multiple of the
interval.

The mojom::VSyncParameterObserver interface is implemented both with and
without OOP-D. This removes the last usage of CompositorVsyncManager so
we can delete it.

Bug: 949711, 441577
Change-Id: I966b2d9dcc660efbdfb1c2800c71b6de3024e186
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1554834
Reviewed-by: Daniele Castagna <[email protected]>
Reviewed-by: Ken Buchanan <[email protected]>
Reviewed-by: Luke Halliwell <[email protected]>
Commit-Queue: kylechar <[email protected]>
Cr-Commit-Position: refs/heads/master@{#654530}
37 files changed