mon/OSDMonitor: verify full_crc when available

Crash if it is wrong.  The monitors should *always* agree.

Signed-off-by: Sage Weil <sage@redhat.com>
osd: verify our OSDMap encoding based on crc

When we generate a full map and can't replicate teh expected CRC, request
the full map from the mon.

Note that we should do everything we can to avoid doing this:

 - upgrade OSDs before mons
 - do not encode things into OSDMaps that OSDs can't replicate

Signed-off-by: Sage Weil <sage@redhat.com>
osd: add osd_inject_bad_map_crc_probability option

Signed-off-by: Sage Weil <sage@redhat.com>
osdmaptool: allow OSDMap encode

Signed-off-by: Sage Weil <sage@redhat.com>
ceph-dencoder: mark OSDMap as featureful, but with stray data

Signed-off-by: Sage Weil <sage@redhat.com>
mon/OSDMonitor: do not reencode OSDMap on 'osd getmap'

Return the bits unmolested.

This is a slight change in that we do not reencode based on the client's
features.  However, this is an admin command and the client is generally
the CLI or REST API.  It makes more sense to provide the unmolested
bits than to reencode them based on features present in a tool that
never inspects the map.

Signed-off-by: Sage Weil <sage@redhat.com>
mon/OSDMonitor: dump inc and full maps we get a crc mismatch

Signed-off-by: Sage Weil <sage@redhat.com>