marshal-cleanup: save and restore exception around cleanup
marshal-cleanup: save and restore exception around cleanup

With Python 3.7 some Python API in the cleanup path clears exceptions
which makes us return NULL in the end without an error set.

Make if safe to call the cleanup functions with an error set by
saving and restoring exceptions.

pexip/pygobject,GNOME/pygobject,GNOME/pygobject,pexip/pygobject,GNOME/pygobject,pexip/pygobject