Updated to a new version of protobuf and fixed a few conformance tests.

When `google.protobuf.NullValue` appears on its own, we need to parse
and serialize it as plain JSON "null" value.
diff --git a/upb/json_encode.c b/upb/json_encode.c
index 8338b4d..587772d 100644
--- a/upb/json_encode.c
+++ b/upb/json_encode.c
@@ -167,12 +167,17 @@
 
 static void jsonenc_enum(int32_t val, const upb_fielddef *f, jsonenc *e) {
   const upb_enumdef *e_def = upb_fielddef_enumsubdef(f);
-  const char *name = upb_enumdef_iton(e_def, val);
 
-  if (name) {
-    jsonenc_printf(e, "\"%s\"", name);
+  if (strcmp(upb_enumdef_fullname(e_def), "google.protobuf.NullValue") == 0) {
+    jsonenc_putstr(e, "null");
   } else {
-    jsonenc_printf(e, "%" PRId32, val);
+    const char *name = upb_enumdef_iton(e_def, val);
+
+    if (name) {
+      jsonenc_printf(e, "\"%s\"", name);
+    } else {
+      jsonenc_printf(e, "%" PRId32, val);
+    }
   }
 }