Update thread-roots concurrently during uffd compaction

Currently we let gc-thread update all mutator stacks in the pause, which
adds significant pause time. We can use ThreadList::FlipThreadRoots
instead.

Bug: 268482646
Bug: 263452747
Bug: 160737021
Test: manual
Change-Id: Ic3cf5038244ac23d849c00cf5b8f7295565f3281
14 files changed