Fix boot image extension relocation.

Store boot image begin and size to the extension header as
it is needed for relocation; this requires rewriting the
ImageHeader::IsAppImage(). Also mark the class roots as
visited to satisfy a DCHECK() for extension relocation.

And re-enable loading boot image extensions for tests.

Test: Add relocation tests to dex2oat_image_test.
Test: m test-art-host-gtest
Test: testrunner.py --host --optimizing --relocate --no-relocate
Test: testrunner.py --target --64 --optimizing --relocate
Bug: 119800099
Change-Id: Ie7e883beaa927ca4dc91f0ae660c8de74f7d4ddb
6 files changed