This code identified cycles by marking edges on a root-node path R, ...,
A, ..., X with the Target::Cycle variant when there was already some
other path R, ..., B, ..., X. This successfully induced an acyclic graph
structure while maintaining the topology of which vertices are reachable
along a given path, but it did not serve the general interest of
constructing a graph for MCTS for a couple of reasons:
1) Parent-child edges with a Target::Cycle target did not have a
corresponding child-parent edge, so it became harder to do the right
thing in backpropagation.
2) Without more concrete control over which paths are considered the
canonical owner of a vertex, it is possible that a suboptimal
path (which goes through some nodes that admit very strong opponent
play) would be the canonical path. This could prevent discovery of a
very good move.