Implement cross-process surfaces on both Mac and Linux.

Also add support for both GL_TEXTURE_2D and GL_TEXTURE_RECTANGLE_ARB. The
latter is needed for cross-process surface support on Mac.