Implement hyper-edges for data-based synthesis variable ordering as defined in DCSH paper
In #196 (closed) we're adding the DCSH variable ordering algorithm. The paper that defines the algorithm specifies a Design Structure Matrix (DSM) is to be constructed from the CIF specification, and converted to a graph, upon which the algorithm operates. We instead used the current hyper-edges we derived from the CIF specification, and converted those to a graph. The graphs are then not as defined in the paper. We could construct hyper-edges matching the DSMs of the paper, and thus get the graphs matching those of the paper. This may improve performance, but we would need to check that, requiring scripts to do so (#375 (closed)), more testing of DCSH (#376), and a way to choose between hyper-edges (#378 (closed)). We could then consider making the new hyper-edges default, if they perform better (#379 (closed)). Note that the current hyper-edges have a bug (#377).