uploadFile computes MD5 and sends bytes at same time.

closes #31
getPublicUrl handles us-east-1 bucket location correctly