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/java/java.go b/java/java.go
index 8b50eff..2bd5bff 100644
--- a/java/java.go
+++ b/java/java.go
@@ -145,9 +145,11 @@
 	installFile string
 }
 
+type AndroidJavaModuleContext common.AndroidBaseContext
+
 type JavaModuleType interface {
 	GenerateJavaBuildActions(ctx common.AndroidModuleContext)
-	JavaDynamicDependencies(ctx common.AndroidDynamicDependerModuleContext) []string
+	JavaDependencies(ctx AndroidJavaModuleContext) []string
 }
 
 type JavaDependency interface {
@@ -191,11 +193,13 @@
 
 var defaultJavaLibraries = []string{"core-libart", "core-junit", "ext", "framework"}
 
-func (j *javaBase) AndroidDynamicDependencies(ctx common.AndroidDynamicDependerModuleContext) []string {
-	return j.module.JavaDynamicDependencies(ctx)
+func javaDepsMutator(ctx common.AndroidBottomUpMutatorContext) {
+	if j, ok := ctx.Module().(JavaModuleType); ok {
+		ctx.AddDependency(ctx.Module(), j.JavaDependencies(ctx)...)
+	}
 }
 
-func (j *javaBase) JavaDynamicDependencies(ctx common.AndroidDynamicDependerModuleContext) []string {
+func (j *javaBase) JavaDependencies(ctx AndroidJavaModuleContext) []string {
 	var deps []string
 
 	if !j.properties.No_standard_libraries {