crush/mapper: add support for descend_once == 2

Try to move past the not-quite-right behavior of the descend_once
tunable (wherein it will not stop on a collision).  Make the new
behavior identical to what you get from the 'indep' buckets.

More specifically:

 - for legacy and descend_once == 1, the recursion attempts is the same
   as the normal total_tries count, but we have the special-case to bail
   on the first reject (but not collide).  Make this *only* happen for
   descend_once == 1(and not == 2)
 - for descend_once == 2, remove that reject hack, and make the default
   recursion tries == 1.  This can then be adjusted in the (new) 'normal'
   way with the set_chooseleaf_tries rule step.

Signed-off-by: Sage Weil <sage@inktank.com>
crush/CrushWrapper: make descend_once==2 the new optimal

Signed-off-by: Sage Weil <sage@inktank.com>
mon/OSDMonitor: allow setting 'firefly' tunables

Signed-off-by: Sage Weil <sage@inktank.com>
osd/OSDMap: add feature bit for TUNABLES3 (== CRUSH_V2)

Add a feature bit for the new tunables.  Re-use the same feature bit
as CRUSH_V2 because the support is part of the same code update.

Signed-off-by: Sage Weil <sage@inktank.com>
crushtool: reorg test-map-* cli tests

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