Modify role-selection logic to strictly seperate bootstrap roles
(which are bound by default to admin nodes) vs. discovery roles (which
are bound by default to non-admin roles).
Optimize depends_on?, and make it detect cycles in the role dependency
graph as well.
Add a Roles.expand function.
Add an all_transition_data that is more comprehensive about what it grabs.
Add a runlog attribute to the node role.

This captures the last run information for this noderole.
Add a converge! method that reruns the annealer until there is nothing
to do.
Add rerun method to node_role.rb/
Add a make_admin! function to ease bootstrapping.
Optimize traversal of the noderole graph.

As we construct the noderole graph, we will save information on the noderoles
to make sorting and operating on arbitrary subsets of the noderole graph
easier and require fewer graph traversals.
Merge pull request #682 from VictorLowther/pull-req-master-c3b0cb7e352feeff6881ccd3369d63b7170a505b

https://github.com/crowbar/barclamp-crowbar/pull/682

Merged by devtool for VictorLowther