Allow 404 handler to be customized

Currently, the 404 handler is hardcoded to `http.NotFound` and there doesn't appear to be a way to construct a catch all handler with pure pattern semantics, so this is exposes a way to set a custom handler when no patterns are matched. Defaults to existing behavior.