AU: Delta Diff Generator

Adds a class that can take two root filesystem image and generate a
delta between them. Currently it's not very well tested, but this will
improve once the diff applicator is written.

Also, an executable to run the generator.

Other changes:
- Stop leaking loop devices in unittests
- extent mapper: support sparse files, ability to get FS block size
- AppendBlockToExtents support sparse files
- subprocess more verbose on errors
- add WriteAll to utils (WriteAll avoids short-write() returns)
- mkstemp wrapper for ease of use
- VectorIndexOf, finds index of an element in a vector

Review URL: http://codereview.chromium.org/891002
diff --git a/topological_sort.cc b/topological_sort.cc
index 2e34144..8422849 100644
--- a/topological_sort.cc
+++ b/topological_sort.cc
@@ -5,6 +5,7 @@
 #include "update_engine/topological_sort.h"
 #include <set>
 #include <vector>
+#include "base/logging.h"
 
 using std::set;
 using std::vector;
@@ -26,6 +27,8 @@
     TopologicalSortVisit(graph, visited_nodes, nodes, it->first);
   }
   // Visit this node.
+  LOG(INFO) << graph[node].file_name << " " << graph[node].op.type() << " "
+            << graph[node].op.data_length();
   nodes->push_back(node);
 }
 }  // namespace {}