[RECOVERY] Ensure shards are identical after recovery

Today we don't check if the recovery target has all the
files that we expect there after the recovery. This commit
adds aditional safety to ensure all files are present with the
correct checksums on recovery finalization.
the diff's toString can be huge (it looks like contains all file names), maybe log it and only add the missing list to the exception message?