Control mutator order

Register mutators inside lambdas that are called in a defined order to
correctly order mutators before and after the arch and deps mutators.

Test: build.ninja identical
Change-Id: Iefe2a3515aee8570e76a6e76925db4cda0e9e822
diff --git a/android/module.go b/android/module.go
index d6eee44..06f1fca 100644
--- a/android/module.go
+++ b/android/module.go
@@ -24,15 +24,6 @@
 	"github.com/google/blueprint"
 )
 
-func init() {
-	RegisterTopDownMutator("load_hooks", loadHookMutator).Parallel()
-	RegisterBottomUpMutator("defaults_deps", defaultsDepsMutator).Parallel()
-	RegisterTopDownMutator("defaults", defaultsMutator).Parallel()
-
-	RegisterBottomUpMutator("arch", ArchMutator).Parallel()
-	RegisterTopDownMutator("arch_hooks", archHookMutator).Parallel()
-}
-
 var (
 	DeviceSharedLibrary = "shared_library"
 	DeviceStaticLibrary = "static_library"
@@ -100,6 +91,7 @@
 	blueprint.Module
 
 	GenerateAndroidBuildActions(ModuleContext)
+	DepsMutator(BottomUpMutatorContext)
 
 	base() *ModuleBase
 	Enabled() bool