foreman: Strive to maintain existing minion roles
foreman: Strive to maintain existing minion roles

Before this patch, the foreman had blindly accepted whatever minion
role assignments it had found in the database.  The problem with this,
is that if di restarts, it's likely that each minion will be assigned
a new role, causing a major disruption in the cluster.  This patch
resolves the issue by adding an initialization phase to the foreman.
During this phase, it queries the current role of each minion, and
attempts to assign it this role in the database.

PenguinToast/quilt,akshayknarayan/quilt,ZhongtianWang/quilt,NetSys/quilt,stevenlin598/quilt,LuiseV/quilt,ZhongtianWang/quilt,akshayknarayan/quilt,kklin/quilt,NetSys/quilt,kklin/kelda,secant/quilt,akshayknarayan/quilt,stevenlin598/quilt,akshayknarayan/quilt,mmussomele/quilt,tejasmanohar/quilt,secant/quilt,secant/quilt,NetSys/quilt,kklin/kelda,kelda/kelda,LuiseV/quilt,PenguinToast/quilt,kklin/kelda,kklin/quilt,ZhongtianWang/quilt,quilt/quilt,ejj/quilt-dev,kklin/quilt,kayousterhout/quilt,PenguinToast/quilt,kklin/quilt,mmussomele/quilt,secant/quilt,stevenlin598/quilt,mmussomele/quilt,kelda/kelda,mmussomele/quilt,quilt/quilt,mmussomele/quilt,kelda/kelda,stevenlin598/quilt,ejj/quilt-dev,kayousterhout/quilt,quilt/quilt,LuiseV/quilt,ejj/quilt-dev,quilt/quilt,stevenlin598/quilt,NetSys/quilt,kayousterhout/quilt,stevenlin598/quilt,PenguinToast/quilt,mmussomele/quilt,kelda/kelda,secant/quilt,kklin/kelda,ZhongtianWang/quilt,tejasmanohar/quilt,LuiseV/quilt,LuiseV/quilt,NetSys/quilt,ejj/quilt-dev,tejasmanohar/quilt,PenguinToast/quilt,tejasmanohar/quilt,kayousterhout/quilt