Split invoker to invoker and invokerN

- Eliminate optional argument.
- Remove unnecessary check for `arguments.length`.
- Add unit tests.
the type of functor is immaterial. if we want to compose these we need them to return something, not throw.