GdkGL: Fix and clean up gdk_cairo_draw_from_gl()

This was unnecessarily creating a framebuffer in the texture case,
and it was not properly setting up a framebuffer with the texture
as source in the software fallback w/ texture source case.