Emit a signal when a Root is validated.

It's needless abuse of inheritance to override a view and override validate()
just to know when a root has been validated. It's also sloppy to just "wait one
frame" and assume the root will be validated after that.

Much better to allow something simple and explicit like:

root.validated().connect(new UnitSlot() {
  public void onEmit () {
    // do whatever we need after the root is validated
  }
}).once();
Provide the drag event to minFlickExceeded.

This allows layer-drag flickers to capture the event.
New navigation mechanism: ScreenSpace.

This is a bit like ScreenStack, but different enough to not really benefit from
sharing code. A ScreenSpace provides an infinite 2D grid metaphor, where new
screens slide in from a direction, and the user then goes "back" by sliding the
current screen back in the direction from whence it came.

Care has been taken to allow a ScreenSpace to interact comfortably with screens
that scroll (via Flicker). So you can, for example, scroll a new screen UP into
view, then then allow the user to continue scrolling up to see the whole
scrolled screen. But if they scroll DOWN while looking at the top of the
screen, this initiates an untransition gesture which takes them back to the
previous screen.

Naturally when you transition screens orthogonally to the main scroll direction
(slide new screen in LEFT and then scroll up and down), things work nicely as
well.

This is not yet totally complete. There are some non-space transitions to be
implemented (IN/OUT which will zoom and cross fade to simulate going INto our
OUT of the plane, and FLIP, which will work like ScreenStack's flip). These
non-space transitions will not afford user initiated untransition gestures, so
in those cases the app will have to provide back buttons, as usual. But it's
nice to have the option to include non-spatial transitions where they make
sense.

I'm also going to support a horizontally scrolled, but snapped to contents,
style UI screen where the screen supports an arbitrary number of UI Roots each
of which is laid out vertically, and the user can use sliding gestures to go
left and right between them. Naturally, this will be set up so that if you want
you can have a leftward slide from the left-most column initiate an
untransition to the previous screen if that's how these screens came in, or you
can transition vertically into a left/right navigable screen, and have the user
go UP to get out of it (which is nice because they can use UP regardless of
which column they're in).