core: convert code to use Rados C++ API

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
style: switch to 2 space indent for C++

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
trivial: clean-ups

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>
core: prevent Rados GC when IoCtx ref exists

Adds a weak-key table that keeps IoCtx -> Rados references. The GC won't
reclaim Rados instances as long as an IoCtx references it. However, the
GC will collect the IoCtx references and automatically remove the Rados
instances, so we don't have to explicitly remove the IoCtx keys.

Signed-off-by: Noah Watkins <noahwatkins@gmail.com>