Use util.log for logging in acyclic phase
Use util helper for determining ordering
Add network simplex as an option for ranking
Use cp-data instead of graphlib for data structures
Remove self loops during the acyclic phase

We also rerun the acyclic algorithm during the rank phase if we've
collapsed ranks. This ensures that we've not created any cycles as a
side-effect of the collapse.

Fixes #91
Ensure that minLen is respected for min and max nodes

Fixes #94
Remove knowledge about ranks from acyclic function
If min / max are unconnected they should be at source / sink level
Merge exp-rank-fixes branch with simplex branch
Require Digraph to build network simplex spanning tree
Add more descriptive comments
Duplicate ranking tests using network simplex