Fix proto.Equal handling of proto3 bytes fields.

proto3 specifies that non-message scalar fields don't have a "has" bit,
and so []byte{} and []byte(nil) are considered equivalent.
diff --git a/proto/equal_test.go b/proto/equal_test.go
index 0e0db8a..7b45eaa 100644
--- a/proto/equal_test.go
+++ b/proto/equal_test.go
@@ -35,6 +35,7 @@
 	"testing"
 
 	. "github.com/golang/protobuf/proto"
+	proto3pb "github.com/golang/protobuf/proto/proto3_proto"
 	pb "github.com/golang/protobuf/proto/testdata"
 )
 
@@ -131,6 +132,8 @@
 		&pb.MyMessage{RepBytes: [][]byte{[]byte("sham"), []byte("wow")}},
 		true,
 	},
+	// In proto3, []byte{} and []byte(nil) are equal.
+	{"proto3 bytes, empty vs nil", &proto3pb.Message{Data: []byte{}}, &proto3pb.Message{Data: nil}, true},
 
 	{"extension vs. no extension", messageWithoutExtension, messageWithExtension1a, false},
 	{"extension vs. same extension", messageWithExtension1a, messageWithExtension1b, true},