Make cross-process CALayers work on Mac

Add a header file for the remote layer API and a helper function to
determine if it is supported at runtime.

Add a mechanism for disambiguating if a "surface handle" refers to an
IOSurfaceID or a CAContextID (the thing that is passed across processes
to do cross-process CALayer drawing).

Add support in RenderWidgetHostViewMac to put in a CALayerHost from
another process's CAContextID. In the process of this, make the root
CALayer hanging off of the RenderWidgetHostViewMac have flipped
geometry, and update LayoutLayers to take this into account.

This is working surprisingly well, but needs a bit more work before it
can be turned on. We still need to:
* exert GPU back-pressure from the GPU process'
  -[ImageTransportLayer drawInCGLContext] function (it's an open loop
  now).
* use the isAsynchronous property to make 60fps animation not jerky.
* ensure that these resources' lifetimes are being managed reasonably
  and aren't eating tons of GPU
* ensure that not rounding texture sizes to the nearest 64 pixels (as is
  done for the IOSurface scheme) isn't causing fragmentation.

BUG=312462

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@279200 0039d316-1c4b-4281-b951-d872f2087c98
16 files changed