Currently, custom Sites must match .* or similar to handle 404's, since the fallback is always generic.
This locks them out of the "redirect to canonicalize to path/ code", so they currently have a choice between a custom 404 page or automatic correction of /.
Instead, allow the 404 controller to be constructed explicitly. Sites can now customize 404 by implementing this method and not matching everything.
(Sites can still match everything with a catchall rule if they don't want this behavior for some reason, so this should be strictly more powerful than the old behavior.)
See next diff for CORGI.