Remodel route and redirect handling using proxies

This updates the route and redirect handler to use proxies to lazily
provide the route's handler class.  This keeps the previous behavior
of not trying to constantize the routes until the route is validated,
but cleans up and commonizes how routes and redirects provide their
respective handlers.

There is no major behavior changes - all implementation cleanups. The
motivation is that redirect handling is just a more-specific case of
route handling.  They should be done in as similar manner as possible
to take advantage of common needs and to ease in maintenance.