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.

Is the list of available node types visible anywhere in the API?  I would expect an API view to let people list the types so that they can know which are available for node creation/modification.