cls_rgw: revise null object instance handling, versioned epoch

Separate the versioned epoch from the object entry version, since in the
case of null instane entries the object version actually contains
meaningful data that can be overwritten.
Keep separate instance entries for null versioned object and delete
marker, since the two can coexist for a period of time. With suspended
versioning bucket, when deleting a null versioned object we create an
delete marker, and set the olh log to remove the object instance, which
will make the gateway send a removal request. Had we kept the same
entry it'll remove the wrong entry.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
cls_rgw: don't write list entry when converting when deleting

when converting the plain entry into a versioned entry, don't write the
list entry if this is a delete op with a null instance.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>