Add a flag to assign to turn the different-type penalty into a violation
The context is that as the Utah CloudLab cluster starts to have both ARM and x86 machines, we think people don't want to get an experiment that mixes both unless they specifically ask for it. So, we take the existing heuristic where assign prefers to pick nodes of the same type, and add a flag that turns it into a constraint that ca be violated. Then, we flip it on only for the Utah CloudLab cluster, and only if the user did not explicitly ask for nodes of both types.