Add Request->dispatch_path and use that for route matching.

Dispatch "should" be done on the "path you would append to Request->base",
but its currently being done on the "full" path. Altering Request->path to
match this behaviour is likely to cause backward compatibility issues..

Add a request->dispatch_path method to calculate the path to be used for
dispatch and use that in route->match.

Closes #373.