Support IsDeltaPayload per <package>.

Mixed full and delta payloads are now supported for multi-payload.

Bug: 36252799
Test: update_engine_unittests
Change-Id: Ic519f8399579c714a65ba9f9f948a389fcc249ed
(cherry picked from commit 4928112f8635f7a5b583171640aee2bda690ba34)
diff --git a/payload_consumer/install_plan.h b/payload_consumer/install_plan.h
index d8d9f57..6dd5a73 100644
--- a/payload_consumer/install_plan.h
+++ b/payload_consumer/install_plan.h
@@ -52,7 +52,6 @@
   bool LoadPartitionsFromSlots(BootControlInterface* boot_control);
 
   bool is_resume{false};
-  InstallPayloadType payload_type{InstallPayloadType::kUnknown};
   std::string download_url;  // url to download from
   std::string version;       // version we are installing.
 
@@ -61,6 +60,7 @@
     uint64_t metadata_size = 0;      // size of the metadata
     std::string metadata_signature;  // signature of the metadata in base64
     brillo::Blob hash;               // SHA256 hash of the payload
+    InstallPayloadType type{InstallPayloadType::kUnknown};
     // Only download manifest and fill in partitions in install plan without
     // apply the payload if true. Will be set by DownloadAction when resuming
     // multi-payload.
@@ -69,7 +69,8 @@
     bool operator==(const Payload& that) const {
       return size == that.size && metadata_size == that.metadata_size &&
              metadata_signature == that.metadata_signature &&
-             hash == that.hash && already_applied == that.already_applied;
+             hash == that.hash && type == that.type &&
+             already_applied == that.already_applied;
     }
   };
   std::vector<Payload> payloads;