Graph algorithms: cyclic?, tsort_cyclic.
Opt-in support for cyclic resolutions.

In the general case, resolutions of a dependency graph should be acyclic. In this case, detect cycles quickly during the resolution and backtrack when they are found.

But sometimes, we need to allow cyclic resolutions. Don't bother detecting them during the resolution, and be sure to use a cycle-supporting topological sort instead of the standard topological sort.

Fixes #159.