s3: do some retries in ListBucket, to work around Amazon-vs-Go's HTTP/TLS bug

Change-Id: Idfc8187d07f558f2e7c590dc6c14c66791f46e57
sync: missing handler return + wording change

Change-Id: Iebd5344a0a0e1418cb48c92b91858ebf2f9486c8
sync: fix bug in prefix enumeration. could send one extra item.

Depending on timing, could lead to ListMissingDestinationBlobs getting out
of sync and causing a lot of blobs to be replicated that were fine and already
on the server.

Change-Id: I3710e59088f1fe4e526f8f11bc9d1837a727e512
sync: add paranoia around checking storage's Enumerate implementation

Didn't find anything, but is useful to keep in, to maybe find bugs in the future
for other storage types.

Change-Id: If0fd37e03578de233be8da95ca45623c5f12156b
blobserver: give ListMissingDestinationBlobs the ability to exit earlier

If there's an enumeration error for src or dst, sending a zero value
will shut down ListMissingDestinationBlobs.

Change-Id: I95598e9dc2607610436faa06f40485d1abd2342f
sync: don't replicate a shard's missing blobs until enumeration is complete

Prevents spurious replication of blobs on enumeration error.

Change-Id: I38db7406f6ea52137cb757b32599b18eb7fcf3da