Add copyBlob to portable abstraction and add S3-optimized variant

@demobox In looking at `KeyNotFoundException`, it should be displayed as `<key> not found in container <container>:  while copying`