Split invoker to invoker and invokerN

- Eliminate optional argument.
- Remove unnecessary check for `arguments.length`.
- Add unit tests.
This is how I rewrote it a while ago

```js
function invoker(name, obj, len) {
        var method = obj[name];
        var length = typeof len === "number" ? len : method.length + 1;
        return curry(function() {
            var endArgs = arguments.length - 1;
            if(endArgs >= 0) {
                var target = arguments[endArgs];
                var targetMethod = target[name];
                if (targetMethod == method) {
                    return targetMethod.apply(target, _slice(arguments, 0, endArgs));
                }
            }
        }, length);
    }
```