storage: support resumable uploads

## Do not merge!

RE: #298

It works!

It's 200 lines, but it works!

(Still needs tests, but regressions work as usual)
`resumeUpload`:
```js
if (util.is(lastByteWritten, 'number')) {
  createUploadRequest(lastByteWritten);
} else {
  getLastByteWritten(createUploadRequest);
}
```

We want `createUploadRequest` to execute. If it fails, `getLastByteWritten` would execute. Sorry if I'm not catching on... tests are breaking my brain right now.