split the 'copy_object()' in 2 parts, 'get_object()' and 'put_object()'
and make each of these decorated by '@content_replay_retry' (instead of
the whole 'copy_object()'), so that a failing 'put_object' does not
trigger getting the object from the src objstorage again.
Also, only log in statsd the end result (error or success) instead of
logging each attempt. We don't need these intermediate results in
statsd, and it makes them much harder to use in a dashboard.
Last, for the sake of implementation ease, use function name as
"operation" tag in stastds reports (so "get_object", "put_object" and
"obj_in_storage") instead of "copy" and "in_dst".
Doing so, the 'operation' argument of the ReplayError exception has been
dropped.
Add doctrings and comments in test_cli.py
Small code refactoring in test_cli: make '_fill_objstorage_and_kafka()'
take the actual objstorage as argument, instead of the dict of
objstorages ("src", "dst"). The "dst" objstorage is not used in the
function, and it make the intent of this later clearer.