Checkpointing shardkv recovery (need more tests)

Works with existing tests, but need to write new ones focused on
recovery.  Should change it so recovery contacts all peers and uses the
most updated one instead of just using the first responsive one.  Also
need to deal with shards being too big for memory.