Add a 405 error class to http handler
(PUP-1151) Change Route matching semantic specs.

Rather than Routes having to match on path and method, they match only
on path and can then decide whether the method is allowed or raise
a method not allowed error.

Most of the handler routing spec tests are really route spec tests, so
those have been moved over.
(PUP-1151) Implement Route changes.

Rather than creating a route with a path and method, routes are created
with just a patch matcher and method handlers can be added by calling
the HTTP method-named methods on the route. By default, handlers for all
methods just raise a method not allowed error; user-defined handlers
replace those.

When the handler is given a list of routes to register, it checks to see
if any of them have identical path matching regexes and throws an error
if they do. However, it is still entirely possible for regexes that do
not compare as equal to express the same regular language, so users
still bear responsibility to ensure their routes cooperate.