Add RuleBuilder.Installs().String()

Add a RuleBuilderInstalls type for a slice of RuleBuilderInstalls,
and give it a String() method that returns the list of installs
in the format that is convenient for passing to Make.

Test: rule_builder_test.go
Change-Id: I2e9cd9abf4dfb0ad312d0a6662f1567baf9cd222
diff --git a/java/dexpreopt.go b/java/dexpreopt.go
index a89731a..127deab 100644
--- a/java/dexpreopt.go
+++ b/java/dexpreopt.go
@@ -28,7 +28,7 @@
 	isTest          bool
 	isInstallable   bool
 
-	builtInstalled []string
+	builtInstalled string
 }
 
 type DexpreoptProperties struct {
@@ -196,9 +196,7 @@
 
 	dexpreoptRule.Build(pctx, ctx, "dexpreopt", "dexpreopt")
 
-	for _, install := range dexpreoptRule.Installs() {
-		d.builtInstalled = append(d.builtInstalled, install.From+":"+install.To)
-	}
+	d.builtInstalled = dexpreoptRule.Installs().String()
 
 	stripRule, err := dexpreopt.GenerateStripRule(globalConfig, dexpreoptConfig)
 	if err != nil {