Added pre-edge-traverse and post-edge-traverse functions.
Improved edge-traverse test cases.
post-edge-traverse can return seen nodes.
Made post-edge-reverse test a bit more interesting.
Add test pointing out a pre-traverse problem
Fix `pre-traverse` to pass the failing test

There are special cases such as this:

    :a
   / | \
  v  v  v
 :e :b :c
  |     ^
  |    /
  |   /
  |  /
  | /
  |/
  v
 :d

in which the function yields false traverse. The error comes from the
fact that after discovering :a the algorithm marks its direct successors
:e, :b and :c as discovered. Therefore if the algorithm starts at :a
then chooses to visit :e, then :d it will start backtracking instead of
visiting :c because the vertex :c is marked as visited. If the
successors of :a are visited in the order (:e :b :c) then the result
would be (:a :e :d :b :c), which is obviously incorrect.
Rewrite the test to respect the established style
Added Bron-Kerbosch (maximal cliques) and degeneracy ordering fns and tests.
Merge branch 'master' of https://github.com/aysylu/loom
Added Johnson's algorithm and breadth-first all-pairs shortest path and associated tests.
Fixed an error caused by finding intersection on a KeySeq rather than a Set in Bron-Kerbosch (maximal cliques).
Changed shortest-paths to all-pairs-shortest-paths.
Updated tests to refer to renamed all-pairs-shortest-paths fn.
Merge pull request #40 from mattrepl/master

Maximal cliques and all-pairs shortest path algorithms
Merge pull request #31 from fmjrey/edge-traverse

Edge traverse
Merge pull request #38 from gshopov/pre-traverse-fix

Pre traverse fix