Implement data sync and several other changes that should be separate commits

The larger changes are:
- metadata sync uses the replica log for retrying after errors
- command line usage is simpler, and requires fewer options
- source and destination are gotten from / validated against
  the region map, with unit tests

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>