Wip 8665

@dmick @jcsp 
I am pretty happy with this.
There are still a few TODOs in the code and I've reached the point where I need some fresh eyes and sleep.
Created a new pull request to catch your attention.
I need to fix the minion-sim test variant for crush maps. It works fine against a real cluster.

For this to be navigable by clients I suspect we need a 'parents' attribute here.

Last time we talked about it I think we discussed include the full (id) ancestry of a node, so that having an OSD ID would allow an API consumer to readily retrieve the rack->chassis->host trace for it.