Fix a re-bootstrapping issue.

This change fixes an issue where the re-bootstrapping process would overwrite a
newer bootstrap manifest with one that it generates using its older minibp.  It
fixes the issue by only generating a new bootstrap manifest right after
rebuilding minibp (as part of the bootstrap process).  It then uses an
additional rebootstrap iteration to replace the old bootstrap manifest with the
new one.

Change-Id: I16bad2f30f6ad7f10da07d77105e8745adec3650
diff --git a/blueprint/module_ctx.go b/blueprint/module_ctx.go
index f8fe564..961bb8b 100644
--- a/blueprint/module_ctx.go
+++ b/blueprint/module_ctx.go
@@ -18,7 +18,7 @@
 	PropertyErrorf(property, fmt string, args ...interface{})
 
 	Variable(name, value string)
-	Rule(name string, params RuleParams) Rule
+	Rule(name string, params RuleParams, argNames ...string) Rule
 	Build(params BuildParams)
 
 	VisitDepsDepthFirst(visit func(Module))
@@ -81,10 +81,12 @@
 	m.actionDefs.variables = append(m.actionDefs.variables, v)
 }
 
-func (m *moduleContext) Rule(name string, params RuleParams) Rule {
+func (m *moduleContext) Rule(name string, params RuleParams,
+	argNames ...string) Rule {
+
 	// TODO: Verify that params.Pool is accessible in this module's scope.
 
-	r, err := m.scope.AddLocalRule(name, &params)
+	r, err := m.scope.AddLocalRule(name, &params, argNames...)
 	if err != nil {
 		panic(err)
 	}