goprotobuf: Fix performance regression in proto encoding for the common case where we get ErrNil.

R=r
CC=golang-dev
https://codereview.appspot.com/13882044
diff --git a/proto/encode.go b/proto/encode.go
index d49ab84..1cc62e9 100644
--- a/proto/encode.go
+++ b/proto/encode.go
@@ -587,11 +587,13 @@
 		p := prop.Prop[i]
 		if p.enc != nil {
 			err := p.enc(o, p, base)
-			if err != nil && !state.shouldContinue(err, p) {
-				if err != ErrNil {
+			if err != nil {
+				if err == ErrNil {
+					if p.Required && state.err == nil {
+						state.err = &ErrRequiredNotSet{p.Name}
+					}
+				} else if !state.shouldContinue(err, p) {
 					return err
-				} else if p.Required && state.err == nil {
-					state.err = &ErrRequiredNotSet{p.Name}
 				}
 			}
 		}