Add copyBlob to portable abstraction and add S3-optimized variant

How does this error message come out?