ObjectCacher: use get_object_maybe() instead of duplicating logic

Soon objects will be non-existent without having an Object
representing them.  This means an additional check on the pool being
in the objects vector is necessary.

Change the second argument from object locator to pool id, which is
accessible everywhere.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
ObjectCacher: keep track of non-existent objects in a set

Instead of keeping full Object instances around, maintain a set of
sobject_ts that do not exist. This takes far less memory. Keep this
set on a per-ObjectSet basis, so that releasing, purging, and flushing
an ObjectSet works properly without another xlist.

Signed-off-by: Josh Durgin <josh.durgin@inktank.com>
librbd: use client_oc_max_objects tunable

Just for testing memory usage for now

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