Do not wait in ClearReferent

Make IsNullOrMarkedHeapReference use a CAS when the GC requires an
update, to make it safe to run it concurrently with clearing the
referent. This means we no longer have to wait in ClearReferent.

Bug: 399794032
Test: Treehugger
Change-Id: I599980bb093f674d83591b0c5dd9066d09a589af
11 files changed