container: unset container reference on root area when finalizing

The root area may outlive the container, so it must not point to already
freed memory.
container: Remove unused struct

GPtrArrays of MechAreas are being inserted directly as the touch
hastable value, so MechTouchInfo was unused.
container: Dont take coordinates out of a crossing event

Crossing events have no coordinates, so MECH_ENTER can't be used
to pick an stack of areas, that'll have to wait for the subsequent
MECH_MOTION.
container: Add mech_container_has_grab_for_event()

This function tells whether the container has an ongoing grab
for the type of the given event.
gl-view: Improve event forwarding

Now keyboard, pointer, and touch IDs get tracked independently.
Additionally to ::pick-child, ::child-coords is now used for the situation
where a child has a grab, and the coordinates move outside that area quad,
so that vmethod is responsible for guessing the right child coordinates in
that situation.

Also, crossing events are generated to ensure the right state of child areas
as the state of a pointer grab changes.
gl-box: Implement child_coords()

As opposed to the color-based picking implemented in pick_child(),
this vmethod unprojects the event x/y on the near and far planes,
and finds the intersection point of that ray with the plane where
the child quad is.