Remove non-trivial constructors/destructors from SystemProperties

With the goal of disallowing exit time destructors, SystemProperties's
non-trivial destructor needs to be removed.  This means replacing the
union hack with yet another hack as we don't want to allocate anything
despite relying on some polymorphism.

Bug: 73485611
Test: boot bullhead
Change-Id: I64223714c9b26c9724bfb8f3e2b0168e47b56bc8
diff --git a/tests/system_properties_test.cpp b/tests/system_properties_test.cpp
index f2151e1..949019f 100644
--- a/tests/system_properties_test.cpp
+++ b/tests/system_properties_test.cpp
@@ -42,7 +42,7 @@
   }
   ~SystemPropertiesTest() {
     if (valid_) {
-      contexts()->FreeAndUnmap();
+      contexts_->FreeAndUnmap();
     }
   }