improve signing

* add and implement tests according to AWS documentation
* provide hash.Hash to signPayload
* make time a parameter for calculating v2 payload
* only overwrite Date when not set for s3 signing
* refactorings