Add a converter in OSDMap to split the ruleset into rule

Add a convert funtion in OSDMap, this function will reorganize
current(pending) crush, make the rule_id start from 0 and hoding
the constraint that rule_id == ruleset_id, and change the pools'
ruleset accordingly.

The upgrade strategy is:
0. Create a copy of current crush map.
1. Cleanup all the rules in the new crush map.
2. Iterate all rules in the current crush map, add these rules to the new crush
    map repectively, and set the ruleset_id = rule_id; Meanwhile, note that the
    rule_id will change during the remove-and-add process, we need to maintain a
    map between old_rule_id and new_rule_id.
3. Run sanity check against the new crush_map.
4. Change ruleset field of all pools accordingly.
5. Propose the new maps

After upgrading, the new crush map will hoding the constraint that rule_id == ruleset_id.
We also renumber the rules from 0 to make it cleaner.

Signed-off-by: Xiaoxi Chen <xiaoxi.chen@intel.com>