This is a combination of these two earlier series:
https://www.redhat.com/archives/libguestfs/2019-August/msg00235.html
https://www.redhat.com/archives/libguestfs/2019-August/msg00240.html
plus changes to allow .callback = NULL / .free != NULL, and to reduce
the complexity of freeing callbacks.
Although it's rather long there's nothing complex here. We might
consider squashing some patches together.
I believe I've addressed everything raised in the earlier reviews,
with the exception that I'm not using Py_XDECREF because it seems a
bit obscure (I'd never heard of it myself and it hides the true
meaning of the statement).
Rich.