Route D3D VSync signal to Compositor

This change introduces a new type of BeginFrameSource that listens to
accurate VSync signals generated on GPU side and delivered via
existing GpuCommandBufferMsg_UpdateVSyncParameters IPC.

This provides noticeably less VSync timing variation and ~3x less
latency than the existing delay based mechanism.

List of included changes:
1) GpuVSyncBeginFrameSource - new type of BFS derives from from
   ExternalBeginFrameSource and triggers OnBeginFrame promptly when
   it receives an external signal.
   GpuVSyncBeginFrameSource also includes a VSync control
   mechanism to signal whether VSync production need to be started or
   stopped on GPU side.

2) GpuBrowserCompositorOutputSurface and CommandBufferProxyImpl
   get a new method to start / stop VSync production on GPU side.

3) GpuProcessTransportFactory decides which type of BeginFrameSource
   to create based on a combination of type of output surface, OS,
   OS version and whether or not D3D VSync feature is enabled.

4) Based on previous feedback PerCompositorData now supports either
   Synthetic BFS or GPU VSync which are mutually exclusive.
   VSync parameters used by Synthetic BSF and VSync signal used by
   Gpu VSync BFS are delivered using exactly the same codepath and
   initiated from the same IPC call. The payload is also the same in
   both cases - VSync timestamp and interval.

5) On GPU side this feature is activated by instantiating
   GpuVSyncProviderWin instead of VSyncProviderWin. The new provider
   is hosted exactly the same way as other providers but it uses a
   different mechanism to deliver VSync signal.
   See https://codereview.chromium.org/2681033011 for more details.

This feature is disabled by default and might be turned on by
--enable-features=D3DVsync switch or by configuring an experiment
that enables D3DVsync feature.

Please note that this feature is currently disabled on Win7 where
the implementation of GpuVSyncProviderWin seems to be grabbing an
internal D3D lock while waiting for VSync and that significantly
slows down all other D3D calls. I plan to address this in a feature
patch.

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

Review-Url: https://codereview.chromium.org/2626413002
Cr-Commit-Position: refs/heads/master@{#452249}
11 files changed