Add XorExtentWriter

This class is built on top of BlockExtentWriter(block aligned writer)
and ExtentMap. It will look at the extent map, convert blocks in the
extent map to XOR type, and convert everythign else to COW_REPLACE.

Test: th
Bug: 177104308
Change-Id: I6f9df83ed09f1c5a6aae9f266412132b002acd29
diff --git a/Android.bp b/Android.bp
index b3fbccf..83be871 100644
--- a/Android.bp
+++ b/Android.bp
@@ -242,6 +242,7 @@
         "payload_consumer/partition_writer.cc",
         "payload_consumer/partition_writer_factory_android.cc",
         "payload_consumer/vabc_partition_writer.cc",
+        "payload_consumer/xor_extent_writer.cc",
         "payload_consumer/block_extent_writer.cc",
         "payload_consumer/snapshot_extent_writer.cc",
         "payload_consumer/postinstall_runner_action.cc",
@@ -806,6 +807,7 @@
         "payload_consumer/extent_writer_unittest.cc",
         "payload_consumer/extent_map_unittest.cc",
         "payload_consumer/snapshot_extent_writer_unittest.cc",
+        "payload_consumer/xor_extent_writer_unittest.cc",
         "payload_consumer/fake_file_descriptor.cc",
         "payload_consumer/file_descriptor_utils_unittest.cc",
         "payload_consumer/file_writer_unittest.cc",