Fix xor writer failure

When two install op extents generate consecutive XOR extents, xor extent
writer will merge them. But ExtentMap does not support partial look up,
so OTA fails. Add testcases specifically for this case.

Test: th
Bug: 266021213
Change-Id: Ieb5b9a3fd175f16ced2799050f627376bacbfb51
diff --git a/payload_consumer/extent_map.h b/payload_consumer/extent_map.h
index a985cb5..a83bf0f 100644
--- a/payload_consumer/extent_map.h
+++ b/payload_consumer/extent_map.h
@@ -56,6 +56,15 @@
     const auto it = map_.find(extent);
     if (it == map_.end()) {
       for (const auto& ext : set_.GetCandidateRange(extent)) {
+        // Sometimes there are operations like
+        // map.AddExtent({0, 5}, 42);
+        // map.Get({2, 1})
+        // If the querying extent is completely covered within the key, we still
+        // consdier this to be a valid query.
+
+        if (ExtentContains(ext, extent)) {
+          return map_.at(ext);
+        }
         if (ExtentRanges::ExtentsOverlap(ext, extent)) {
           LOG(WARNING) << "Looking up a partially intersecting extent isn't "
                           "supported by "