not with multiple arguments

Adds (non string-lambda) support for an arbitrary amount of arguments in `not`. Because `not` should work first for any arbitrary function, and then support string lambdas.

I also changed evaluation order to prefer "raw" calls first, and test `*naryFun` later.

Also, wrote a unittest (it had *none*).