storage: support resumable uploads

RE: #298

It works!

It's 200 lines, but it works!
If something causes the upload to abort, we have the resumable upload URI saved, as well as the first chunk of data that was written. I saved this, so next time, if a user wants to upload an entirely different file, we don't "resume" the last upload -- this would lead to malformed data-- instead, we start a new one.