wayland: Chain up on MechWindowWayland::constructed
Add MechContainer

This is now the parent instance of MechWindow, a MechContainer
represents a toplevel container of areas (eg. with a MechStage),
and is meant to put together processing of updates and event
handling for windows, subsurfaces, and wherever a sub-stage
could make sense.

So far, only the root area creation is delegated on it.
area: rename private MechWindow setter

This function now just sets the area qdata, the stage owner
sets now the root area there. Also, unset the window on
finalize(), so we don't get unexpected calls on the object
about to be finalized while disposing the area hierarchy.
window: Take more features into MechContainer

surface/stage management, and event handling are now taken care
of in MechSurface. All callers have been updated too.

The API to manage stage updates in MechContainer makes this a
2-step process. First a redraw/resize is issued, then those
requests are applied at once in mech_container_process_updates(),
this leaves the frame synchronization task on subclasses.
animation: Take a clock reference when running

The toplevel's clock might be destroyed before running
animations down in the area hierarchy if a window is
destroyed, so ensure the clock survives till the last
one of these, as they're going to be forcibly stopped
soon anyway.
wayland: truly emit MECH_LEAVE on pointer leave events

This worked by accident as this event was translated in the
stage as a move to an empty area, so all areas in the current
stack still got the MECH_LEAVE event anyways when the pointer
stack was replaced by an empty set.
events: Add mech_event_[gs]et_target()

This function updates the target field in MechEventAny taking care
of refcount. It's been also put to use where the target is updated.
wayland: Take EGL configuration to a separate .c file

mech-egl-config.[ch] Now contain the EGL initialization code,
each renderable type bit in EGLConfig arguments may have a separate
MechEGLConfig, although only EGL_OPENGL_BIT is used right now.
build: Add $(CFLAGS) around
wayland: flush EGL cairo surfaces on release()

This ensures all drawing commands are issued before using the
surface as a source for the parent surface. Fixes rendering glitches
seen on EGL offscreen experiments.
surface: merge damage/attach into push_update()

This method (now in MechSurface instead of its wayland implementation)
also replaces MechWindow::push_update(), updates are actually pushed
by the stage, right after the rendering method steps out of the surface.
surface: Add render() method

This method sets the source and paints on a surface, and replaces
these two separate steps performed in MechStage.
surface: Add surface-type and renderer-type properties

The renderer type is filled in by surface implementations, and
tells the rendering platform being used to draw on the surface.

The surface type is a more generic enum contemplating cases like
"none" and "offscreen", which will be handy as a hint on surface
creation, as eg. "offscreen" could resolve to the best rendering
platform for a given parent.

On the wayland backend, now both SHM and EGL surfaces set the
renderer type accordingly.
surface: remove unused variable
surface: Use surface type to determine real size

This makes a cleaner distinction on surface size allocation,
as offscreen surfaces will commonly be used for scrollable
content, while the other types can only be toplevels (or
subsurfaces when support is added) and do not need any extra
size.
surface: ensure the backing surface size is updated anytime

This must happen in all cases before rendering onto that surface.
surface: rename variable for clarity

This is only meant to handle scrolling cases, so rename it as such.
surface: Add notion of hierarchy

This will be needed for subsurfaces support, a surface will need
to know about its parent and a sibling so it is placed above it.
wayland: Add MechSurface based on GL textures

This kind of surface will act as the offscreen type for GL
parent surfaces.
surface: Change how surfaces are created altogether

The surface constructor now takes a parent and a surface type,
a surface matching the requirements for that surface type will
be created. MechSurface has been made GInitable altogether, so
it is the caller's responsibility to finish initialization and
fallback on failure.

MechWindow has also gained a renderer-type property, so the
toplevel surface will be updated to match that renderer. As a
consequence, the responsibility to create the toplevel surface
has been moved from MechWindowWayland to MechWindow.

On the wayland side, the ownership of wl_surface structs has moved
from MechWindowWayland to MechSurfaceWayland, this will be useful
when subsurfaces are supported, as wl_subsurfaces are wl_surface
resource. Internally, a wl_surface will only be created for
non-offscreen surfaces.