A utility phase for detecting when a phase would change the graph and reporting extra information
about the effects. The phase is first run on a copy of the graph and if a change in that graph is
detected then it's rerun on the original graph inside a new debug scope under
GraphChangeMonitoringPhase. The message argument can be used to distinguish between the same
phase run at different points.