goprotobuf: disable some logging, plus some safer unmarshaling.

R=r
CC=golang-dev
http://codereview.appspot.com/4482045
diff --git a/compiler/generator/generator.go b/compiler/generator/generator.go
index 2d93658..94d3768 100644
--- a/compiler/generator/generator.go
+++ b/compiler/generator/generator.go
@@ -751,7 +751,10 @@
 		if _, ok := g.usedPackages[fd.PackageName()]; ok {
 			g.P("import ", fd.PackageName(), " ", Quote(filename))
 		} else {
-			log.Println("protoc-gen-go: discarding unused import:", filename)
+			// TODO: Re-enable this when we are more feature-complete.
+			// For instance, some protos use foreign field extensions, which we don't support.
+			// Until then, this is just annoying spam.
+			//log.Printf("protoc-gen-go: discarding unused import from %v: %v", *g.file.Name, s)
 		}
 	}
 	g.P()
diff --git a/proto/encode.go b/proto/encode.go
index 99ea31a..5eab33b 100644
--- a/proto/encode.go
+++ b/proto/encode.go
@@ -514,7 +514,7 @@
 		// Can the object marshal itself?
 		iv := unsafe.Unreflect(p.stype, unsafe.Pointer(&s[i]))
 		if m, ok := iv.(Marshaler); ok {
-			if reflect.ValueOf(iv).IsNil() {
+			if isNil(reflect.ValueOf(iv)) {
 				return ErrNil
 			}
 			data, err := m.Marshal()