Patch support[

This includes support for the HTTP patch method.

In addition, both etag and last-modified headers will only be generated if they result in a non-nil value.

I ran into problems where the header was added even if there was a nil value returned from the associated function.