Annotate mutators that use methods that prevent mutator coalescing

Mutator coalescing reduces the overhead of visiting every module
for every mutator by calling a series of mutator methods on a
a single module in a row.  This is only valid for well-behaved
mutators.  Add methods on MutatorHandle that allow annotating
mutators that are not well behaved, and use that to prevent
coalescing mutators.

Bug: 372076859
Test: all soong tests pass with race detector on
Flag: EXEMPT refactor
Change-Id: Id9b005f05227e5558cac6d488030a7398af13fb8
diff --git a/android/mutator_test.go b/android/mutator_test.go
index 88bf1d2..33fca9e 100644
--- a/android/mutator_test.go
+++ b/android/mutator_test.go
@@ -158,7 +158,7 @@
 				ctx.BottomUp("rename_bottom_up", func(ctx BottomUpMutatorContext) {
 					moduleStrings = append(moduleStrings, ctx.Module().String())
 					ctx.Rename(ctx.Module().base().Name() + "_renamed1")
-				})
+				}).UsesRename()
 				ctx.BottomUp("final", func(ctx BottomUpMutatorContext) {
 					moduleStrings = append(moduleStrings, ctx.Module().String())
 				})