Add :no_dsl import tag to Dancer2::Plugin

If present we skip the old DSL imports.

Signed-off-by: Pedro Melo <melo@simplicidade.org>
Minor refactoring and add a test script for :no_dsl flag.
reflect Changes
Merge branch 'melo-pr/allow_plugin_to_skip_legacy_imports'
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'
Rework halt to use with_return from Return::MultiLevel.

Once #485 is merged, use the with_return handler to immediately stop processing
a before hook or route handler. Includes tests for use in a reoute handler and a
before hook.

Resolves #472.