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
If this `ExactSize` means the length of binary to be uploaded (sorry I don't know much about `riak_cs_mp_utils' :P ) , then is it necessary to consider `x-amz-copy-range`?