Add ability to specify parameter location

Here are the matching rules:

 - Parameters named in the URI will automatically be placed in the URI.
 - Parameters with a `location` of `uri` that are not named in the URI won't do anything.
 - Header parameters will override any default headers sent by the application.
 - For GET requests, all non-URI parameters will be sent in the query string.
 - For non-GET requests, parameters will default to the request body.