Deprecate EarlyMutator and DynamicDependencies

DynamicDependencies can be implemented more flexibly by a
BottomUpMutator.  If there are no DynamicDependencies, then
EarlyMutators are identical to BottomUpMutators.  Deperecate both, and
reimplement DynamicDependencies inside a BottomUpMutator that is
guaranteed to be registered first.
diff --git a/context_test.go b/context_test.go
index 8877be9..acf0c1c 100644
--- a/context_test.go
+++ b/context_test.go
@@ -92,7 +92,7 @@
 		t.FailNow()
 	}
 
-	errs = ctx.resolveDependencies(nil)
+	errs = ctx.ResolveDependencies(nil)
 	if len(errs) > 0 {
 		t.Errorf("unexpected dep errors:")
 		for _, err := range errs {
@@ -100,16 +100,6 @@
 		}
 		t.FailNow()
 	}
-
-	errs = ctx.updateDependencies()
-	if len(errs) > 0 {
-		t.Errorf("unexpected dep cycle errors:")
-		for _, err := range errs {
-			t.Errorf("  %s", err)
-		}
-		t.FailNow()
-	}
-
 }
 
 // |---B===D       - represents a non-walkable edge