Added some convience methods to routing handler.  Handle an edge case fo...

Tests initially failed from the following.

Given 3 routes
GET           /foo
DELETE    /foo
GET          /bar

A request to DELETE /bar will result in a 404 instead of a 405.  

    PathTemplateMatcher<RoutingMatch> matcher = matches.get(exchange.getRequestMethod());
    if (matcher == null) {
        invalidMethodHandler.handleRequest(exchange);
        return;
    }
    PathTemplateMatcher.PathMatchResult<RoutingMatch> match = matcher.match(exchange.getRelativePath());
    if (match == null) {
        fallbackHandler.handleRequest(exchange);
        return;
    } 

Since the routes are first mapped on the HttpMethod we will get a PathTemplateMatcher back which contains DELETE /foo.  It will then fall through to the next if and return a 404.  I think the expected behavior should be 405?  Is looping over ALL PathTemplateMatchers the only way to catch this?
This will not perform great. A better approach would be to build a PathTemplateMatcher with all paths from every method. If the first method specific matcher misses then you could check this 'all methods' matcher.