* save files as `incomplete-{filename}` in the dest folder
* rename into place after hash is confirmed or delete if hash is bad
* resume downloads using http `range`
* if DL is resumed from a different app session rewind a bit -
this is to deal with the case where the file size changes before
the content is fully flushed out
* flush dest file at end of readyRead, this mitigates the above
and provides backpressure on the download if the destination disk
is slower than the network connection