mon: ceph-mon: convert an old monitor store to the new format

With the single-paxos patches we shifted from an approach with multiple
paxos instances (one for each paxos service) keeping their own versions
to a single paxos instance for all the paxos services, thus ending up
with a single global version for paxos.

With the release of v0.52, the monitor started tracking these global
versions, keeping them for the single purpose of making it possible to
convert the store to a single-paxos format.

This patch now introduces a mechanism to convert a GV-enabled store to
the single-paxos format store when the monitor is upgraded.

As we require the global versions to be present, we first check if the
store has the GV feature set: if not we will not proceed, but we will
start the conversion otherwise.

In the end of the conversion, the monitor data directory will have a
brand new 'store.db' directory, where the key/value store lies,
alongside with the old store.  This makes it possible to revert to a
previous monitor version if things go sideways, without jeopardizing the
data in the store.

The conversion is done as during a rolling upgrade, without any
intervention by the user.  Fire up the new monitor version on an old
store, and the monitor itself will convert the store, trim any lingering
versions that might not be required, and proceed to start as expected.

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
test: ObjectMap: add a generic leveldb store tool

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
vstart.sh: Create mon data directory before --mkfs

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
ceph-object-corpus: add branch to tolerate MMonProbe format change

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>