Fix bug where GL fence objects were shared between contexts.

These objects were allocated during DrawIOSurface when copying
the IOSurface to a video frame.

This pulls the copy to the video frame up to CompositorSwapBuffers,
and performs the copy in a separate context. Using the separate
context makes a call to glFlush before the copy necessary (to be sure
that the copy gets the correct contents), and after, to kick off the async
copy.

Moving the copy up to the swap make it so that we won't send more
frames just because of window damage.

BUG=334742

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@246077 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 246077