md partial: simplify status processing

Ignore the status of an entry entirely. Just sync each mentioned
(section, name) pair once. For entries that are later aborted or
otherwise don't complete, this causes a couple extra metadata
requests, but these are inexpensive and should be rare. This is
guaranteed to catch all updates, and is much simpler to understand and
verify. Data sync may require more complex handling, but metadata sync
is cheap enough to be able to use a simpler approach.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
client: clean up request generation

Instead of having special strings as commands and handling those
in a bunch of conditionals, put the path and data required directly
in the method that uses it. This makes it easier to see the correspondence
between a method and the API that it's calling.

Add a general connection method so other files don't duplicate code.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
md sync: use replica log api to store persistent state

Update the replica log in each worker as it finishes a batch of entries,
and use the marker with a maximum number of entries instead of timestamps
to specify which log entries to get.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
cli: check that int arguments are positive

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
partial sync: make it run continuously

Add an option to control how long to wait between sync attempts.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
cli: set the default logging level for the requests library higher

There's too much noise for INFO to be a default level for it.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
md sync: handle 404s on metadata on worker bounds

Ignore 404 when deleting something.

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