mon: PaxosService: add 'exists_key/version' helper functions

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
mon: MonmapMonitor: add function to obtain latest monmap

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
mon: Monitor: backup monmap prior to starting a store sync

If by fate we end up attempting a store sync after failing at
least one before, we might not have a monmap to read from the
store to backup.  Therefore, in that case, we shall backup the
current monmap being used by the monitor.

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
ceph-mon: Attempt to obtain monmap from several possible sources

In order of interest/priority:

  - our latest monmap version
  - a backup monmap version created during sync start, if the store
    appears to be in a post-aborted sync state
  - a mkfs monmap version

If none of these are found, we should go ahead and try to build a
monmap from ceph.conf to join an existing cluster.

Signed-off-by: Joao Eduardo Luis <joao.luis@inktank.com>
Merge pull request #225 from ceph/wip-4543

Fixes #4543

Reviewed-by: Greg Farnum <greg@inktank.com>