Explicitly set nargs on Not and And

Ideally this would be set automatically for Not by the fact that eval takes
one arg.
Fix circular import

Also refactor Function.nargs vs. Function._nargs.

This lets Function.nargs be S.Naturals0 when any number of args is allowed.
fix merge issues
fix function.py docstrings