AU: Cycle Breaker for directed graphs.

A new class CycleBreaker that uses Johnson's elementary circuit
finding algorithm to find cycles in a directed graph. This class goes
beyond Johnson's algorithm to also break them using a simple greedy
algorithm.

Like Johnson's elementary circuit finding algorithm, this is not
intended to find cycles that contain only one node (i.e., a node that
points to itself).

Review URL: http://codereview.chromium.org/784001
diff --git a/SConstruct b/SConstruct
index 5bfbec7..f43c68f 100644
--- a/SConstruct
+++ b/SConstruct
@@ -86,6 +86,7 @@
 
 sources = Split("""action_processor.cc
                    bzip_extent_writer.cc
+                   cycle_breaker.cc
                    decompressing_file_writer.cc
                    delta_diff_parser.cc
                    download_action.cc
@@ -113,6 +114,7 @@
                             action_pipe_unittest.cc
                             action_processor_unittest.cc
                             bzip_extent_writer_unittest.cc
+                            cycle_breaker_unittest.cc
                             decompressing_file_writer_unittest.cc
                             delta_diff_generator_unittest.cc
                             download_action_unittest.cc