Make forward more... straight-forward:

The forward method in App would create a new request, and then reach
the global dispatcher to call another dispatching loop. Terrible.

Instead, we simply return the new request created, and detect it
in the dispatcher, setting the request to what we got, and running
the dispatching loop again.

This is easily done because we're already running forward in the
with_return scope.
reflect changes
Merge branch 'feature/improve-forward'