Make it easier to change the location of the primary boot image.

This CL adds a function `art::GetPrebuiltPrimaryBootImageDir`, which
returns the location of the primary boot image. Other code should use
this function to find the primary boot image. In that way, changing the
location of the primary boot image only requires changing this function.

Also:
- Use the ART boot profile in art_common_test as a fallback when the
  primary boot image cannot be used.
- Update the `-Xforcejitzygote` flag not to assume that the primary
  boot image exists in the ART APEX.

Bug: 211973309
Test: All ART test suites.
Test: -
  1. Change `art::GetPrebuiltPrimaryBootImageDir` to returning a path on
     /system.
  2. Make the corresponding change in the build system.
  3. Run all ART test suites again.
Change-Id: Id34d7eec534733d932e520fa3b503488c0dc513a
diff --git a/libartbase/base/common_art_test.cc b/libartbase/base/common_art_test.cc
index 593ea25..b0f1c6c 100644
--- a/libartbase/base/common_art_test.cc
+++ b/libartbase/base/common_art_test.cc
@@ -559,15 +559,12 @@
 }
 
 std::string CommonArtTestImpl::GetImageDirectory() {
-  std::string path;
   if (IsHost()) {
     const char* host_dir = getenv("ANDROID_HOST_OUT");
     CHECK(host_dir != nullptr);
-    path = std::string(host_dir) + "/apex/art_boot_images";
-  } else {
-    path = std::string(kAndroidArtApexDefaultPath);
+    return std::string(host_dir) + "/apex/art_boot_images/javalib";
   }
-  return path + "/javalib";
+  return GetPrebuiltPrimaryBootImageDir();
 }
 
 std::string CommonArtTestImpl::GetCoreFileLocation(const char* suffix) {