The fourth patch does not provide a new feature, but only fixes of bugs, of the doc string formatting, and of the doc tests.
Since I do not have Sage locally, I'd appreciate if one of you could build the documentation and see if it looks nice.
Not a feature, but a fix concerns the hash: If one constructs a g-algebra as one is supposed to (g_algeba method resp. unique factory) then the g-algebra is a unique parent. Hence, id(self) is a good hash for it, and __cmp__ can be removed.
Note that the hash in Sage is allowed to change from session to session, so, id(self) is fine - see UniqueRepresentation.__hash__. Of course, one can destroy the uniqueness on purpose, but that's not our problem.
Tests in sage/libs/singular, multi_polynomial_ideal.py and plural.pyx pass. I am now running all doc tests, but I think it is OK to put it as "needs review".
Concerning review: I think we should review each other's code. So, in particular, one of you should please review my last three patches.
Please verify if I got the credits (author list) right.
Apply trac4539_libplural.patch trac4539_pickling.patch trac4539_normal_forms.patch trac4539_fix_docs.patch