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/test_utils.cc b/test_utils.cc
index 6c1e35b..1c2f895 100644
--- a/test_utils.cc
+++ b/test_utils.cc
@@ -204,7 +204,7 @@
   EXPECT_EQ(0, System(StringPrintf("ln -s /some/target %s/sym", kMountPath)));
   EXPECT_EQ(0, System(StringPrintf("ln %s/some_dir/test %s/testlink",
                                    kMountPath, kMountPath)));
-  EXPECT_EQ(0, System(StringPrintf("umount %s", kMountPath)));
+  EXPECT_EQ(0, System(StringPrintf("umount -d %s", kMountPath)));
   
   if (out_paths) {
     out_paths->clear();