[#817] Accept only 200, 201 status codes
[#817] Refactor bytes -> hex conversion

* Make conversion more efficient
* Extract conversion code to be reused
[#817] Re-check MD5 returned in the ETag header
Merge pull request #819 from akvo/issue/817-s3-put

Issue/817 s3 put