Rework the Dispatchers' 404 handler

The commit to store postponed hooks in the runner by app name did not
include updating the Dispatchers' not_found_app that was created when
there were no matching routes. (@xsaywer++ and @mickeyn++ for that work)

Rather than create this new app, use the first app the dispatcher is
using to throw a 404 error and clean up the context from that app
after throwing the error.

Current implementation assumes there is at least one app to dispatch
over so the request object is created.. should not be an issue in
practice!
Merge pull request #660 from PerlDancer/bugfix/response_not_found

Rework the Dispatchers' 404 handler after postponed hooks change in Runner.
Allow to filter Apps for the PSGI app better:

It used to be possible to create a PSGI app while giving specific
App objects. Now you can also do this using App names and regexes.

This allows one to create a PSGI app as such:

    my $psgi_app = Dancer2->psgi_app( [
        'App1', 'App2', 'App3', qr{^MyCoolApp::Resources}
    ] );
normalize calls to Dancer2->runner->psgi_app as Dancer2->psgi_app
reflect change
update changelog
Merge branch 'feature/filter-apps'
Tests for memory cycles in App and Runner.

Depends on Test::Memory::Cycle.
weak_ref 'app' attribute in Role::Handler.

Also clean up how the Handlers are created in Core::App, passing in app
as an item instead of adding it to a config has that was creating another
memory cycle.
Remove memory cycles involving app hooks.

Close over a weakened copy of app object when creating the 'after' hook
that flushes sessions.

Resolves #610.
Merge branch 'bugfix/circular_refs'
reflect last important change
Fixed typo of with_return clearer method
reflect changes
Merge branch 'pr/with_return_typo'
refer to Dancer2::Config about overriding attribs
reflect change
Merge branch 'pr/session-config'
Added a log call, when a hook dies

Instead of just croaking, the error message gets logged as well
Changed test to use Plack::Test