implement upb_Map_Next() as the new upb_Map iterator

update upb to use upb_Map_Next()
remove upb_MapIterator_SetValue(), which was declared but not actually implemented
remove upb_MapIterator_Done(), which was implemented but not actually used

PiperOrigin-RevId: 489989481
diff --git a/python/map.c b/python/map.c
index bdfb34d..b3a8fff 100644
--- a/python/map.c
+++ b/python/map.c
@@ -318,11 +318,10 @@
     const upb_FieldDef* key_f = upb_MessageDef_Field(entry_m, 0);
     const upb_FieldDef* val_f = upb_MessageDef_Field(entry_m, 1);
     size_t iter = kUpb_Map_Begin;
-    while (upb_MapIterator_Next(map, &iter)) {
-      PyObject* key =
-          PyUpb_UpbToPy(upb_MapIterator_Key(map, iter), key_f, self->arena);
-      PyObject* val =
-          PyUpb_UpbToPy(upb_MapIterator_Value(map, iter), val_f, self->arena);
+    upb_MessageValue map_key, map_val;
+    while (upb_Map_Next(map, &map_key, &map_val, &iter)) {
+      PyObject* key = PyUpb_UpbToPy(map_key, key_f, self->arena);
+      PyObject* val = PyUpb_UpbToPy(map_val, val_f, self->arena);
       if (!key || !val) {
         Py_XDECREF(key);
         Py_XDECREF(val);
@@ -474,8 +473,8 @@
   }
   upb_Map* map = PyUpb_MapContainer_GetIfReified(self->map);
   if (!map) return NULL;
-  if (!upb_MapIterator_Next(map, &self->iter)) return NULL;
-  upb_MessageValue key = upb_MapIterator_Key(map, self->iter);
+  upb_MessageValue key, val;
+  if (!upb_Map_Next(map, &key, &val, &self->iter)) return NULL;
   const upb_FieldDef* f = PyUpb_MapContainer_GetField(self->map);
   const upb_MessageDef* entry_m = upb_FieldDef_MessageSubDef(f);
   const upb_FieldDef* key_f = upb_MessageDef_Field(entry_m, 0);