AU: Changes for deltas on traditional bios machines.

BUG=None
TEST=Attached unittests/tested on image

- Fix uninitialized variable err in action processor unittest

- Let Omaha dictate if an update is a delta or full update

- Bug fix in delta generator for differently-sized images

- More logging when applying delta updates

- Fix infinite loop in http fetcher unittest

- log each HTTP connection to know when a dropped connection is
  reestablished.

- Detect when speed goes below a threshold and reestablish HTTP
  connection (currently < 10bytes/sec for 90 contiguous seconds).

- Fix stack overflow in libcurl http fetcher.

- optimize out a lot of needless CPU usage in libcurl http fetcher
  (turns out adding a glib main loop source uses a lot of CPU).

- subprocess: pass PATH, log stdout/stderr

- postinstall runner: support for ext3 and ext4 target filesystems.

Review URL: http://codereview.chromium.org/2805027
diff --git a/libcurl_http_fetcher.h b/libcurl_http_fetcher.h
index 6f32183..fd55d8e 100644
--- a/libcurl_http_fetcher.h
+++ b/libcurl_http_fetcher.h
@@ -69,7 +69,7 @@
     return reinterpret_cast<LibcurlHttpFetcher*>(data)->FDCallback(source,
                                                                    condition);
   }
-  bool TimeoutCallback();
+  gboolean TimeoutCallback();
   static gboolean StaticTimeoutCallback(gpointer data) {
     return reinterpret_cast<LibcurlHttpFetcher*>(data)->TimeoutCallback();
   }
@@ -79,7 +79,8 @@
   // one call to curl_multi_perform. This method will set up the glib run
   // loop with sources for future work that libcurl will do.
   // This method will not block.
-  void CurlPerformOnce();
+  // Returns true if we should resume immediately after this call.
+  bool CurlPerformOnce();
 
   // Sets up glib main loop sources as needed by libcurl. This is generally
   // the file descriptor of the socket and a timer in case nothing happens