Fix ZERO and DISCARD operations.

These operations were broken (and not used in the generator) because
the code expects them to have a blob offset, but they don't. This bug
prevents them from being used in full payloads, but can still be used
in delta payloads.

Bug: 27858697
TEST=Deployed a full payload with ZERO operations to the new update_engine.

(cherry picked from commit 0497d05764dcae38e7a7419a2f25eff043172850)

Change-Id: I258ae8883aa505278b163d489d9f6b03087bf90d
diff --git a/payload_consumer/delta_performer.cc b/payload_consumer/delta_performer.cc
index f490c08..e2613da 100644
--- a/payload_consumer/delta_performer.cc
+++ b/payload_consumer/delta_performer.cc
@@ -827,10 +827,8 @@
 
 bool DeltaPerformer::CanPerformInstallOperation(
     const chromeos_update_engine::InstallOperation& operation) {
-  // Move and source_copy operations don't require any data blob, so they can
-  // always be performed.
-  if (operation.type() == InstallOperation::MOVE ||
-      operation.type() == InstallOperation::SOURCE_COPY)
+  // If we don't have a data blob we can apply it right away.
+  if (!operation.has_data_offset() && !operation.has_data_length())
     return true;
 
   // See if we have the entire data blob in the buffer