gdk_x11_display_make_gl_context_current: move some code

This moves the code related to the frame sync code into
the is_attached check, which means we don't have to ever
run this when making non-window-paint contexts current.

This is a minior speed thing, but the main advantage
is that it makes making a non-paint context current
threadsafe.
GtkGLArea: Major reworking

This restructures the way buffers are allocated and bound in a way
that is more flexible.

Buffer operation happens in three phases:
create_buffer() - Creates the gl objects
allocate_buffers() - Allocates space for the buffers at a given size
attach_buffers() - Attaches the buffers to the framebuffer and makes
                   the framebuffer the default drawing target
And destroy via
delete_buffers()

We call all these the first draw, and after that we allocate buffers
each time the widget changes size until the buffers are deleted.
We delete the buffers at unrealize.

However, anyone that wants to manually control buffer allocation strategies
can manually call allocate/delete_buffers().

There are also some other changes:
* Support for stencil buffers.
* A manual render mode where ::draw doesn't render unless you manually
  invalidated the previous rendering.
GtkGLArea: Add INPUT_ONLY window so that we can get events
GtkGLArea: Add profile property

This lets you force a core 3.2 context if you want
GtkGLArea: Add resize signal

This is very useful, as almost all GL code wants to recalculate
the cameras each time the window size changes.
GdkGLArea: fix has_alpha changes at runtime

We need to completely reallocate the buffers if we switch
has_alpha, because we may switch from render buffers to
texture.