go.tools/go/ssa: use bytes.Buffer instead of io.Writer.

This is (a) more efficient and (b) avoids the need for
constant error handling, since buffer writes can't fail.

Also:
- added WriteFunction and WritePackage functions,
  similar to types.WriteFoo.
- *Function and *Package now implement io.WriterTo.

LGTM=gri
R=gri
CC=golang-codereviews
https://golang.org/cl/57930044
diff --git a/go/pointer/gen.go b/go/pointer/gen.go
index bfb3bf9..a9e1842 100644
--- a/go/pointer/gen.go
+++ b/go/pointer/gen.go
@@ -1141,9 +1141,9 @@
 			fn2 := *cgn.fn // copy
 			fn2.Locals = nil
 			fn2.Blocks = nil
-			fn2.DumpTo(a.log)
+			fn2.WriteTo(a.log)
 		} else {
-			cgn.fn.DumpTo(a.log)
+			cgn.fn.WriteTo(a.log)
 		}
 	}