gdkgl: Don't constantly re-create the tmp framebuffer
Add gdk_gl_texture_quad() helper

Right now this just centralizes the glBegin/glEnd code, but
this will be replaced with buffer objects later.
GdkGLContextX11: Use passed in context, not get_current()
gdk_cairo_draw_from_gl: Document that this changes the current context
GdkGL: Rename "context" to "paint_context" to clarify things a bit
gdk_gl_texture_quad: Use shaders to texture things

This is the modern way OpenGL works, and using it will let us
switch to a core context for the paint context, and work on
OpenGL ES 2.0.
GdkWindow: Try to use a Core 3.2 GL profile for the paint context

If this is supported we avoid a lot of legacy baggage which we don't
need.
gdk_cairo_draw_from_gl: Remove useless call

The glFramebufferTexture2DEXT call makes no sense here, we're
not using the texture as a framebuffer, just as a normal
texture source.
Add GDK_GL env var and GdkGLFlags

This moves the GDK_ALWAYS_USE_GL env var to GDK_GL=always.
It also changes GDK_DEBUG=nogl to GDK_GL=disable, as GDK_DEBUG
is really only about debug loggin.

It also adds some completely new flags:

 software-draw-gl:
   Always use software fallback for drawing gl content to a cairo_t.
   This disables the fastpaths that exist for drawing directly to
   a window and instead reads back the pixels into a cairo image
   surface.

 software-draw-surface:
   Always use software fallback for drawing cairo surfaces onto a
   gl-using window.  This disables e.g. texture-from-pixmap on X11.

 software-draw:
   Enables both the above.
Add support for GDK_GL=texture-rectangles

This allows us to test our support for GL_ARB_texture_rectangle
GdkGL: Fix up GL_ARB_texture_rectangle support

This broke when gdk_gl_texture_quad moved to shaders. We need
a specialized shader for the rectangle case.
Add gdk_gl_context_has_framebuffer_blit()

This checks if the context supports GL_EXT_framebuffer_blit
GdkX11GLContext: Use bitblit for swap if no buffer age support

If buffer age is undefined and the updated area is not the whole
window then we use bit-blits instead of swap-buffers to end the
frame.

This allows us to not repaint the entire window unnecessarily if
buffer_age is not supported, like e.g. with DRI2.