update_engine: Remove problematic deflate caches.

This patch calls puffin::RemoveDeflatesWithBadDistanceCaches() to ignore certain
deflates that older puffin clients fail to properly process.

Unfortunately this adds another round of puffin call which will add a few
seconds to paygen, but we can't get out of it at this point yet. In the future
we can increase a minor version for it.

Bug: crbug.com/915559
Test: generate delta update from payloads with problematic deflates
Change-Id: I77416d4005b5ad2fbb47c129541c811b6a380f60
diff --git a/payload_generator/delta_diff_utils.cc b/payload_generator/delta_diff_utils.cc
index d3629ff..f93fb55 100644
--- a/payload_generator/delta_diff_utils.cc
+++ b/payload_generator/delta_diff_utils.cc
@@ -937,6 +937,15 @@
         puffin::RemoveEqualBitExtents(
             old_data, new_data, &src_deflates, &dst_deflates);
 
+        // See crbug.com/915559.
+        if (version.minor <= kPuffdiffMinorPayloadVersion) {
+          TEST_AND_RETURN_FALSE(puffin::RemoveDeflatesWithBadDistanceCaches(
+              old_data, &src_deflates));
+
+          TEST_AND_RETURN_FALSE(puffin::RemoveDeflatesWithBadDistanceCaches(
+              new_data, &dst_deflates));
+        }
+
         // Only Puffdiff if both files have at least one deflate left.
         if (!src_deflates.empty() && !dst_deflates.empty()) {
           brillo::Blob puffdiff_delta;