copy object server rebased

rebased to develop branch. will be squashed in another branch/PR. addresses #548 .

- [ ] "All headers prefixed with x-amz- must be signed, including x-amz-copy-source."
- [x] code cleanup around `riak_cs_wm_object_upload_part`
- [x] dialyzer / xref
- [x] [multipart upload copy](http://docs.aws.amazon.com/AmazonS3/latest/API/mpUploadUploadPartCopy.html)
- [x] oos copy => will be done with #838
- [x] riak_test
- [x] use ETag: `x-amz-copy-source-if-match, x-amz-copy-source-if-none-match, x-amz-copy-source-if-unmodified-since, or x-amz-copy-source-if-modified-since` c.f. #855 
- [x] can change metadata
- [x] can't change storage class, `x-amz-storage-class`
- no versioning
- no lifecycle

TO BE DONE (maybe not in the scope):

- riak_test of `x-amz-copy-source-if-*` tags, including range
- oos copy & and its test
This comment is mainly for discussion.
S3 doc mensions `x-amz-copy-source-range`  only in "Upload Part - Copy" but not in "PUT Object Copy".
Isn't it useful for "PUT Object Copy"?