rgw: propagate version id when putting obj

A system user can set the rgwx-version-id http param, and it's now sent
to the objclass.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
rgw: copy obj does versioning too

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
rgw: move versioning handling to Object::Write::write_meta()

Instead of having to call set_olh() after calling write_meta(), do it
inside that method. This way we (mostly) don't need to care about
versioning outside of it. This required moving bucket info around
instead of just passing the bucket owner.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
rgw: fix a few regressions

 - need to increase olh epoch if converting plain entry, otherwise
   ordering is skewed
 - if entry is olh (e.g., colocated data + olh), need to make sure we
   write olh idtag xattr
 - completely revalidate obj state after writing it, otherwise attrs
   won't have idtag, and later check to verify if it's olh will fail

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
cls_rgw: don't increase epoch when converting plain entry

Plain entries that are getting converted gets epoch 1, as these are non
versioned ones, and every entry following these will be versioned. Don't
increase the epoch for the operation.

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