Use optional arguments instead of duplicate member definitions

Replace pairs of inheritable member definitions:
```Mathematica
obj[lhs] ...
obj[lhs, self_] ...
```
with one definition with optional argument:
```Mathematica
obj[lhs, self_:obj] ...
```