Add a middleware to handle overriding the http method

This is a small middleware which handles overriding `POST` request method to another "write" method (`PUT`, `PATCH`, `DELETE`).

If overriding conditions are met, the middleware overwrites http.Request.Method, which lets the router route to the 
correct overriden method handler, if any.

A `OverrideRequestMethod` func is provided as a convenience for the client to override the http method.