non-recursive topological sorting and resolve construction bug

A correct non-recursive topological sort is implemented in this commit. This
method showed, as a check of correctness, that the constructed graph sometimes
was not a DAG. (Good news: this means most of the methods were working on non-DAG structures!)

The constructed graph, when derived from a VCF file, should be a DAG. So now,
we enforce topological sorting. It should also be a sorted DAG when we execute
partial order alignment, as the current implementation does not know how to
handle loops.

A second bug, which is resolved in this commit related to odd construction
behavior.

The alt allele was, in some cases, carried between successive variants.

Given the way scoping works this was quite confusing, as one might think that
the alt_allele variable which went wrong should have been reset. However,
without being assigned a default value, it took on the value of the last
alt_allele seen by the construction algorithm. Presumably the memory location
which was pointed to was most-frequently that of the last alt_allele which had
been created. This old alt_allele was then strung into successive variants,
generating loops.
cleanup debugging messages and resolve test failures

A number of tests failed due to a change in the default ids for a given graph.
As the id system is now compacted by default after construction, these tests
had to be updated.

Also, renamed id "compression" to "compaction", which is more intuitive and
clear.