Non-zero return for replication failures

Previously, the replicate script returned 0 even in the case where
there were  failures during the download. This is due to the fact that
downloads were  executed in a thread pool and the results of those
downloads were ignored. This change ensures that a Future is checked
for errors from each one of the downloads.

[#78901404][resolves #10]
Merge 78901404-non-zero-return to master

[Completes #78901404]