MAINT: Clean up the trait template and delegation macros

We use a nice trick here to simplify these macros: use `self` receivers
by default (used by most traits) and support `self: &Self` and similar
for the other receiver modes. This makes it possible to cover all
methods with the same case in the macro. Also improve code comments
a bit.
3 files changed