Move build actions into modules

Move actionDefs from moduleGroup to moduleInfo.  This will result
in multiple build.ninja headers for a single Blueprint file module
if it has multiple variants, each one specifying the variant
used to generate the following rules.

Change-Id: I414cd4d3266da8c2e92118b295569627ddf48cdd
diff --git a/live_tracker.go b/live_tracker.go
index 5a74a5b..4157f95 100644
--- a/live_tracker.go
+++ b/live_tracker.go
@@ -167,3 +167,25 @@
 	}
 	return nil
 }
+
+func (l *liveTracker) RemoveVariableIfLive(v Variable) bool {
+	l.Lock()
+	defer l.Unlock()
+
+	_, isLive := l.variables[v]
+	if isLive {
+		delete(l.variables, v)
+	}
+	return isLive
+}
+
+func (l *liveTracker) RemoveRuleIfLive(r Rule) bool {
+	l.Lock()
+	defer l.Unlock()
+
+	_, isLive := l.rules[r]
+	if isLive {
+		delete(l.rules, r)
+	}
+	return isLive
+}