This merge request replaces !472 (closed), the first attempt. The end result is nearly identical in code, but this merge request has a cleaner history.
The main idea is still that the initial variable order and subsequent algorithms applied to it, are now one configuration, and they are applied in one go. This is a step in #378 (closed), towards also adding a new option that can create more complex such configurations, but that can be applied in the same way.
I reworked the commits, which will hopefully make it easier to follow. It is thus probably easiest to review per commit. But, there is quite some shuffling of code involved, so intermediate results after each commit don't necessarily compile, etc. I tried to go, for the two files with major changes, from top to bottom through the file with the changes.
The first variable order helper is now always created from the model order, rather than the initial variable order. This changes the debug output for some test models.
The second variable order helper is now created after the initial order is applied, in OrdererVarOrder.
Some other smaller changes, see commit messages of separate commits. This includes various debug output changes.
The changes are backwards compatible. There are debug output changes, but the orders used for synthesis remain the same.