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)
Ah, it was just my way around if (0) failing. Either would work, but this one is more telling of what format is expected.