Don't fail on s3 object keys with spaces

See https://bugs.launchpad.net/goamz/+bug/1087338
implement PutReader with metadata

Allows attaching a map and adds map keys as x-amz-meta-{KEY} values to the request. Doesn't validate map values at all.
implements S3 HEAD request.