Real migration logic

Migration actions are now calculated by the policy engine rather than being inserted into the calculations after the calculations are complete.  This allows for much more advanced usages of migrations when ordering constraints are involved.

For example. Take the ordering constraint start A then start B.  If A and B are already started, and A is migrating, B does not have to be recovered for the migration to occur. This allows A to migrate freely without affecting B.

With this logic, a baremetal remote-node's connection resource can migrate freely around the cluster without affecting the resources within that baremetal node.  Note however, that the migrate_to and migrate_from connection resource actions are not implemented yet.  This new migration logic is a prerequisite for the connection resources migrate_to and migrate_from actions implementation.