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/subprocess.cc b/subprocess.cc
index 299d758..89b6cad 100644
--- a/subprocess.cc
+++ b/subprocess.cc
@@ -80,7 +80,7 @@
 
 bool Subprocess::SynchronousExec(const std::vector<std::string>& cmd,
                                  int* return_code) {
-  GError *err;
+  GError *err = NULL;
   scoped_array<char *> argv(new char*[cmd.size() + 1]);
   for (unsigned int i = 0; i < cmd.size(); i++) {
     argv[i] = strdup(cmd[i].c_str());
@@ -100,6 +100,8 @@
                               return_code,
                               &err);
   FreeArgv(argv.get());
+  if (err)
+    LOG(INFO) << "err is: " << err->code << ", " << err->message;
   return success;
 }