Split invoker to invoker and invokerN

- Eliminate optional argument.
- Remove unnecessary check for `arguments.length`.
- Add unit tests.
I have modified the pull request to use `R.last(arguments)` and `Array.prototype.slice.call(arguments, 0, -1))` (`Array.prototype.slice` because `R.slice` doesn't work with arguments objects and `_slice` doesn't support negative indices).