osd/OSDMap: encode crc

Note that we include the logic in OSDMap::encode to add data that comes
after the crc, although we do not use it yet.

Also note that we do not yet verify the crc on decode.

Signed-off-by: Sage Weil <sage@redhat.com>
mon/OSDMonitor: populate Incremental::full_crc

When we encode an Incremental, put in the expected crc for the resulting
full OSDMap.

Signed-off-by: Sage Weil <sage@redhat.com>
osd/OSDMap: verify CRC on decode

Signed-off-by: Sage Weil <sage@redhat.com>
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>