encoding/jsonpb: add support for unmarshaling wrapper and struct types

Also, fixed unmarshaling of map messages where non-fatal errors were not
propagated up.

Change-Id: I06415b4a4ccd12135f0fdfaa38ccda54866139e7
Reviewed-on: https://go-review.googlesource.com/c/protobuf/+/168997
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
diff --git a/encoding/jsonpb/encode_test.go b/encoding/jsonpb/encode_test.go
index d6a2e62..09cb9f8 100644
--- a/encoding/jsonpb/encode_test.go
+++ b/encoding/jsonpb/encode_test.go
@@ -976,10 +976,18 @@
 		input: &knownpb.FloatValue{Value: 1.02},
 		want:  `1.02`,
 	}, {
+		desc:  "FloatValue Infinity",
+		input: &knownpb.FloatValue{Value: float32(math.Inf(-1))},
+		want:  `"-Infinity"`,
+	}, {
 		desc:  "DoubleValue",
 		input: &knownpb.DoubleValue{Value: 1.02},
 		want:  `1.02`,
 	}, {
+		desc:  "DoubleValue NaN",
+		input: &knownpb.DoubleValue{Value: math.NaN()},
+		want:  `"NaN"`,
+	}, {
 		desc:  "StringValue empty",
 		input: &knownpb.StringValue{},
 		want:  `""`,