rule_parser uses []byte

intern target names: share the same string as much as possible.

$ ./repo/android.sh time kati -c -kati_memstats='alloc={{.Alloc}},total={{.TotalAlloc}},sys={{.Sys}},malloc={{.Mallocs}},free={{.Frees}},heap idle={{.HeapIdle}},inuse={{.HeapInuse}},released={{.HeapReleased}},pause={{.PauseTotalNs}},numGC={{.NumGC}}'
...
alloc=686232544,total=9471977912,sys=990856408,malloc=204647708,free=200142535,heap idle=5914624,inuse=909885440,released=0,pause=10103883229,numGC=341
diff --git a/rule_parser_test.go b/rule_parser_test.go
index de49082..1222819 100644
--- a/rule_parser_test.go
+++ b/rule_parser_test.go
@@ -133,7 +133,7 @@
 		*/
 	} {
 		got := &Rule{}
-		assign, err := got.parse(tc.in)
+		assign, err := got.parse([]byte(tc.in))
 		if tc.err != "" {
 			if err == nil {
 				t.Errorf(`r.parse(%q)=_, <nil>, want _, %q`, tc.in, tc.err)