Remove EarlyMutators and DynamicDependencies

EarlyMutators are identical to BottomUpMutators, except they run before
DynamicDependencies.  DynamicDependencies can be replaced with a
BottomUpMutator.  Replace both EarlyMutators and DynamicDependencies
with BottomUpMutators, which allows setting the order between all
mutators through registration order.

Change-Id: Id1305d798d3d2da592061c89d7c10a71780b71a3
diff --git a/common/variable.go b/common/variable.go
index 3949681..9a5998f 100644
--- a/common/variable.go
+++ b/common/variable.go
@@ -19,14 +19,11 @@
 	"reflect"
 	"strings"
 
-	"android/soong"
-
-	"github.com/google/blueprint"
 	"github.com/google/blueprint/proptools"
 )
 
 func init() {
-	soong.RegisterEarlyMutator("variable", VariableMutator)
+	RegisterBottomUpMutator("variable", variableMutator)
 }
 
 type variableProperties struct {
@@ -104,7 +101,7 @@
 	}
 }
 
-func VariableMutator(mctx blueprint.EarlyMutatorContext) {
+func variableMutator(mctx AndroidBottomUpMutatorContext) {
 	var module AndroidModule
 	var ok bool
 	if module, ok = mctx.Module().(AndroidModule); !ok {
@@ -144,7 +141,7 @@
 	}
 }
 
-func (a *AndroidModuleBase) setVariableProperties(ctx blueprint.EarlyMutatorContext,
+func (a *AndroidModuleBase) setVariableProperties(ctx AndroidBottomUpMutatorContext,
 	prefix string, productVariablePropertyValue reflect.Value, variableValue interface{}) {
 
 	if variableValue != nil {