libavb: Make it possible to load other partitions than 'boot'.

Boot loaders may need to load other partitions than just 'boot'. For
example in a setup where both the Secure OS and Android is managed and
updated under the same A/B regime, the boot loader needs to load and
verify both of these and start both of them.

Concretely, make avb_slot_verify() and avb_ab_flow() take a list of
partition name to load and extend AvbSlotVerifyData to contain an array
of the partitions that were loaded.

Bug: None
Test: New unit tests and unit tests pass.
Test: Tested in UEFI-based bootloader and qemu.
Change-Id: I5c369faebf707f87df41418223ce94506d86058e
diff --git a/test/avb_util_unittest.cc b/test/avb_util_unittest.cc
index 1e4bada..ebc368c 100644
--- a/test/avb_util_unittest.cc
+++ b/test/avb_util_unittest.cc
@@ -440,6 +440,15 @@
   EXPECT_EQ(haystack, avb_strstr(haystack, haystack));
 }
 
+TEST(UtilTest, StrvFindStr) {
+  const char* strings[] = {"abcabc", "abc", "def", nullptr};
+
+  EXPECT_EQ(nullptr, avb_strv_find_str(strings, "not there", 9));
+  EXPECT_EQ(strings[1], avb_strv_find_str(strings, "abc", 3));
+  EXPECT_EQ(strings[2], avb_strv_find_str(strings, "def", 3));
+  EXPECT_EQ(strings[0], avb_strv_find_str(strings, "abcabc", 6));
+}
+
 TEST(UtilTest, StrReplace) {
   // We don't care about leaking strings from avb_replace().
   EXPECT_EQ("OK blah bah $(FOO OK blah",