Test that after hook is called once after redirect and forward
Refactor Dispatcher->dispatch (no functional change)

Move the code for calling before hooks and the route handler to its own (private)
method. This will get wrapped by Return::MultiLevel to clean up forward/redirect
DSL methods.
Dispatcher - no need to add the request into the context for every app
Use Return::MultiLevel to wrap route dispatch.

As suggested in #432, use Return::MultiLevel to wrap route dispatch.
Cache the multilevel return coderef in the context for forward/redirect
to use.

Add Return::MultiLevel to prereqs and Scope::Upper to recommends.
Do not halt the response on redirect.

Use the with_return handler to return immediatly to the dispatcher after the
redirect details have been added to the response.

Resolves #432.
Use with_return handler to return control back to the dispatcher after forward.

This is the implementation of "... after a forward is executed, any remaining
code (route and hooks) from the current dispatch will never be run." from #432.
Update documentation for forward and redirect

Include the description of forward and update that forward immediately
returns form the current route/hook. Update redirect docs to reflect
the immediate return from route/hook.
Update Dispatch->dispatch POD, noting optional XS modules.
reflect Changes
Merge branch 'veryrusty-Pr/return_multilevel'