surface: disable extra cached space on clipped areas

If the area attached to the surface is clipped, there is no need
for any extra space to be allocated.
stage: Fix G_SLICE=debug-blocks error

OffscreenNodes are generally dealt with as GNodes, but must not be
freed as such.
container: Queue a redraw after updating the root surface

The contents must be rendered onto the new surface, so make sure
a redraw is issued.
area: Peek the surface renderer type to find out the effective surface type

If no area has a surface type requested, fallback on the container root
surface, and extract that info from its renderer type.
area: Update surface type lazily

Instead of updating the surface right away, just queue a redraw
so surfaces are created orderly when required in the render
process.
area: check harder for visibility on is_visible()

If an area is lacking a container, or a surface on that container,
then the area is effectively not visible too.
area: check for visibility change on set_window()

If the area is now visible after getting a window, notify its children.
stage: check for visibility change on set_root_surface()

If the stage contains areas that are now visible after getting a
root surface, notify about the visibility change.
wayland: Flush the target surface after render()ing textures

Not doing so seems to produce artifacts on some situations, where
just black is rendered instead.
gl-container: Defer root surface creation until the parent is visible

This ensures the parent surface has been already created, and the parent
area is not in some intermediate state between surface type request and
surface creation.
gl-box: Correct handling of inverted textures

When a cairo surface is created on top of a texture, cairo still
seems to assume that the Y-axis ordering is TTB, and not BTT as
GL likes. So instead of inverting the texture on MechGLBox
rendering, set a device transformation so the surface is inverted.

This way, both GL and cairo agree on the way bytes are written,
and mixed rendering can be achieved.
gl-box: Set frustum on the projection matrix
gl-box: Enable blending of child textures

The blending func is set so it's similar to what CAIRO_OPERATOR_OVER
would do.
gl-view: chain up on handle_event()

This way basic area state is updated properly.
gl-view: tighten GL status clearing/restoring
gl-view: Make it request a texture surface if already on a GL renderer

Instead of forcing always a GL surface type, and hence a subsurface,
request an offscreen if the renderer is already GL capable.
gl-view: If on offscreen, set up FBO for render_scene()

If the renderer surface is backed by a GL texture, set up an FBO
so the GL calls performed on render_scene() end up on the texture
and not on the default framebuffer. This effectively enables the
nesting of MechGLViews.
demo: Make "GL box" description a bit more accurate
demo: Simplify EGL demo

And rename to gl.c, as there's nothing EGL specific anymore there. Even
though using different EGLContexts is possible, it's not something to
be encouraged really, so take it out of the demo.

The gears area now inherits from MechGLView, so all the GL setup is
done automatically. To add up a bit more than rendering, input events
are handled to rotate the gears.