Revert^2 "Remove test_per_src from ART tests."

Second attempt at this, which fixes the asan failures.

Remove test_per_src since it is not supported by atest.
Replace it with gtest_isolate which is transparent to atest,
and which still allows us to run tests in parallel.

The size of test binaries halves (from 1GB to 0.5GB).
Test run-time on host is unchanged.
Test run-time on target is 4x faster (tested on walleye).

Added a gtest_main.cc with the gtest isolated main function,
and ART-specific initialization.

Bug: 147819342

Test: m test-art-host-gtest
Test: art/tools/run-gtests.sh
Test: art/test/testrunner/run_build_test_target.py art-gtest-asan
Change-Id: I515c911bb7d44285495802fc66cd732fc8e6d8df
diff --git a/runtime/proxy_test.h b/runtime/proxy_test.h
index 0a871a4..9a01441 100644
--- a/runtime/proxy_test.h
+++ b/runtime/proxy_test.h
@@ -33,11 +33,11 @@
 // Generate a proxy class with the given name and interfaces. This is a simplification from what
 // libcore does to fit to our test needs. We do not check for duplicated interfaces or methods and
 // we do not declare exceptions.
-ObjPtr<mirror::Class> GenerateProxyClass(ScopedObjectAccess& soa,
-                                         jobject jclass_loader,
-                                         ClassLinker* class_linker,
-                                         const char* className,
-                                         const std::vector<Handle<mirror::Class>>& interfaces)
+inline ObjPtr<mirror::Class> GenerateProxyClass(ScopedObjectAccess& soa,
+                                                jobject jclass_loader,
+                                                ClassLinker* class_linker,
+                                                const char* className,
+                                                const std::vector<Handle<mirror::Class>>& interfaces)
     REQUIRES_SHARED(Locks::mutator_lock_) {
   StackHandleScope<1> hs(soa.Self());
   Handle<mirror::Class> javaLangObject = hs.NewHandle(GetClassRoot<mirror::Object>());