Currently the "iterate"-like commands use PyRun_String in the loop, which means it
compiles the same code for every atom. If you instead use Py_CompileString
once and PyEval_EvalCode in the loop, it's about 4x faster.
This patch changes the interface of PAlterAtom and PAlterAtomState to take a
PyCodeObject instead of a string.