big refactor part 2

custom nodes now share same base class as DSFunction and
DSVarArgFunction