AU: Extent writer utility classes

These are similar to the FileWriter classes, but focus on writing to
extents within a file (or device) rather than writing a file in order.

Again there is a ExtentWriter interface from which all types of extent
writers interit.

There are also two basic extent writers: a direct extent writer that
writes data directly to the file descriptor, and a zero padding extent
writer that piggy-backs on another extent writer. When the
zero-padding extent writer is End()ed, it fills out the rest of the
extent with zeros.

Also, BzipExtentWriter: an ExtentWriter concrete subclass that writes
to another ExtentWriter.  BzipExtentWriter bzip2 decompresses all data
passed through.

Review URL: http://codereview.chromium.org/551132
diff --git a/test_utils.h b/test_utils.h
index cd17ec1..bba3ed1 100644
--- a/test_utils.h
+++ b/test_utils.h
@@ -44,6 +44,8 @@
   return system(cmd.c_str());
 }
 
+void FillWithData(std::vector<char>* buffer);
+
 namespace {
 // 300 byte pseudo-random string. Not null terminated.
 // This does not gzip compress well.