Ensure IsStructurallyRedefinable takes into account subtypes

Structural-redefinition changes the addresses of the ArtFields and
ArtMethods of the class being redefined and all of its subclasses. For
this reason if there are JNI-ids that are pointers to these anywhere
we cannot allow structural redefinition of the class, even if the
pointers are for subtypes. Previously we didn't check the
redefinability of sub-types so we could incorrectly invalidate jmethod
or jfield IDs.

Test: ./test.py --host
Bug: 148414638
Change-Id: I8fc809a43e16d5e7938b90b00c531573a2edca00
10 files changed