Support request with body.

sign function has an additional parameter 'body' now. This can be either a String or a Buffer. If given a body md5 is calculated and been taken in account during signature creation. It is assumed that body is UTF-8 encoded.