Add an overlay widget to test overlaying on top of a GtkGLArea
gdkwindow: Move out some gl code to helpers
gdk_cairo_draw_gl_render_buffer - fix clipping

We need to change the source x/y depending on the final clip.
gl: Avoid unnecessary blending

The areas in the final image is made up of these parts:

1) Areas with pure cairo rendering, no gl
2) Areas with gl rendering and no cairo region on top
3) Areas with gl rendering and further cairo drawing on top of that

This commit avoids:
* Blending the cairo surface in case 1, we use a SRC operation instead.
* Applying the cairo surface at all in case 2, this is not needed.
* Clearing the cairo surface to transparent in any case but 3.
* Clearing the back buffer at all, since we never blend over it (glareas
  are opaque for now).

The only complexity is that to track area type 3 we have to know when
widgets are drawn after a gl render. We track this by adding a new method
gdk_window_mark_paint_from_clip() which is called from the core GtkWidget
drawing code in the right place.

This requirement to call gdk_window_mark_paint_from_clip() is only really
effective if you mix cairo and gl drawing, so its not *really* a regression
for code using gdk without GtkWidget drawing, as it will not affect anything
unless you also use the newer gl features in your app.
gdk_window_end_paint: Remove dead code

We can always ignore the alpha blending, because this function
is always called on native windows (has_impl). It is in fact
checked the first thing in the function.