Split invoker to invoker and invokerN

- Eliminate optional argument.
- Remove unnecessary check for `arguments.length`.
- Add unit tests.
@CrossEye I think letting it fail loudly is better than silently returning `undefined`. :) I wouldn't want errors to be masked by functions returning `undefined` when called with unreasonable arguments and wouldn't rely on that behavior either.