Fixes #13842: cannot pickle Ellipsis or NotImplemented.

Thanks for James Sanders for the bug report and the patch.
diff --git a/Modules/_pickle.c b/Modules/_pickle.c
index 2dc3a41..4212e7a 100644
--- a/Modules/_pickle.c
+++ b/Modules/_pickle.c
@@ -2812,6 +2812,19 @@
 }
 
 static int
+save_ellipsis(PicklerObject *self, PyObject *obj)
+{
+    return save_global(self, Py_Ellipsis, PyUnicode_FromString("Ellipsis"));
+}
+
+static int
+save_notimplemented(PicklerObject *self, PyObject *obj)
+{
+    return save_global(self, Py_NotImplemented,
+                       PyUnicode_FromString("NotImplemented"));
+}
+
+static int
 save_pers(PicklerObject *self, PyObject *obj, PyObject *func)
 {
     PyObject *pid = NULL;
@@ -3114,6 +3127,14 @@
         status = save_none(self, obj);
         goto done;
     }
+    else if (obj == Py_Ellipsis) {
+        status = save_ellipsis(self, obj);
+        goto done;
+    }
+    else if (obj == Py_NotImplemented) {
+        status = save_notimplemented(self, obj);
+        goto done;
+    }
     else if (obj == Py_False || obj == Py_True) {
         status = save_bool(self, obj);
         goto done;