go/pointer: fix crash: valueNode(*FreeVar) was allocating 1 node, even for multi-word types.

+ regression test.

Fixes golang/go#8172

Also: return error (not panic) when called with empty input.

LGTM=gri
R=crawshaw, gri
CC=golang-codereviews, jon
https://golang.org/cl/104270043
diff --git a/go/pointer/gen.go b/go/pointer/gen.go
index 8643545..e2b7da9 100644
--- a/go/pointer/gen.go
+++ b/go/pointer/gen.go
@@ -226,7 +226,7 @@
 		if a.log != nil {
 			comment = v.String()
 		}
-		id = a.addOneNode(v.Type(), comment, nil)
+		id = a.addNodes(v.Type(), comment)
 		if obj := a.objectNode(nil, v); obj != 0 {
 			a.addressOf(v.Type(), id, obj)
 		}