osd: add bloom_[fpp,period] to pg_pool_t

Add pool properties to control what type of bloom filter the OSD should track
for each PG.

Signed-off-by: Sage Weil <sage@inktank.com>
osd: add last_archived_bloom to pg_info_t

This field will track the most recent eversion recorded in an archived
bloom_filter.  Any events after this point in the pg log have not yet been
archived and should therefore be included in the in-memory bloom filter.

Signed-off-by: Sage Weil <sage@inktank.com>
osd/osd_types: add explicit hash to object_locator_t

Instead of hashing the object name or key, we allow the hash position to be
provided explicitly.

Signed-off-by: Sage Weil <sage@inktank.com>
osd/OSDMap: use new object_locator_t::hash to place object in a pg

The hash value, is provided, becomes the ps (placement seed) portion of the
pg_t, skipping any hashing of the object name (or locator key).

Signed-off-by: Sage Weil <sage@inktank.com>
osd_types: add generic HitSet type with bloom and explicit implementations

Track a set of hash values, either explicitly or using a bloom_filter. Hide
the implementation and allow us to transparently encode and decode.

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