Rework the Dispatchers' 404 handler after postponed hooks change in Runner.

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.