rgw: decouple object name from index representation

We can't have a direct mapping between the object name to the way we
index it in the bucket index. Have rgw_obj provide different
representations appropriately and use the proper ones where needed.
Introduce the instance element which will be used to refer to versioned
objects.

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
rgw: rename rgw_obj::key to rgw_obj::loc

to avoid confusion

Signed-off-by: Yehuda Sadeh <yehuda@redhat.com>
rgw, cls_rgw: various datastructures use new rgw_obj_key

Instead of using a string for referencing object's index key, use a
rgw_obj_key structure that's also references the object's instance.

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