Allow multiple methods for the same URI

Currently, If a request is registered with the same URI, but different HTTP method to an existing request, the first is overridden. In my opinion that is not the best behaviour. This patch separates requests by method, so that multiple independent responses can be bound to the same URI with different methods. 

This is useful when testing a REST API, which has different behaviour when the same URL is hit with GET/POST/DELETE etc.

I also added a functional test for this in the requests module.  
All existing tests pass.