GtkGLArea: Only re-allocate buffers during paint

This drops the maybe_allocate_buffers that re-allocates buffers
at any point. Instead we just set have_buffers to FALSE and have
the buffers re-created when needed.

This also makes the buffer creation code imdeponent and makes it
clean up no longer needed buffers in order to handle being called
multiple times due to the above.

We also ensure we re-allocate the buffers when we're resizing
and the buffers are already created.
GtkGLArea: Handle window scale factor changes

We need to re-allocate the buffers for the new gl size.