Generalize CIF data-based synthesis variable ordering algorithm interface
I tried in #196 (closed) to add a new variable ordering heuristic algorithm. However, the current CIF data-based synthesis variable ordering algorithm setup is not really suitable for this. I propose to improve the interface, to make it easier to add new algorithms. Also, we should support multiple representations of the specification, besides hyper-edges, and separate concerns better.