Add more standard structural redefinition entrypoints

Add structural redefinition extension function and event that mirror
the 'RedefineClasses' function and 'ClassFileLoadHook' event. The new
extension function is called
'com.android.art.class.structurally_redefine_classes' and the new
extension event is called
'com.android.art.class.structural_dex_file_load_hook'.

These extensions are the preferred way to use structural redefinition.
Like the standard 'RedefineClasses' multiple classes may be redefined
at a time.

The structural_dex_file_load_hook is triggered prior to the
can_retransform_classes ClassFileLoadHook. It is triggered on all
classes, even ones that cannot be structurally changed by
class-loading, class redefinition or by calling the RetransformClasses
function.

Calling 'structurally_redefine_classes' with new definitions that do
not require structural changes will fall back to non-structural
redefinition.

Test: ./test.py --host
Bug: 134162467
Change-Id: If4810930470c5c6509cf6db779910006e114b39f
diff --git a/test/knownfailures.json b/test/knownfailures.json
index 2e34943..049ff0d 100644
--- a/test/knownfailures.json
+++ b/test/knownfailures.json
@@ -1140,9 +1140,12 @@
                   "1985-structural-redefine-stack-scope",
                   "1986-structural-redefine-multi-thread-stack-scope",
                   "1987-structural-redefine-recursive-stack-scope",
+                  "1988-multi-structural-redefine",
                   "1989-transform-bad-monitor",
                   "1990-structural-bad-verify",
-                  "1992-retransform-no-such-field"
+                  "1991-hello-structural-retransform",
+                  "1992-retransform-no-such-field",
+                  "1993-fallback-non-structural"
                 ],
         "variant": "jvm",
         "description": ["Doesn't run on RI."]