Split invoker to invoker and invokerN

- Eliminate optional argument.
- Remove unnecessary check for `arguments.length`.
- Add unit tests.
Actually, if we don't check the context object for that method, we can simplify this function even further, since we don't need to pass the name of the method:
```js
function invokerN(len, method) {
    return curryN(len + 1, function() {
        var target = R.last(arguments);
        return method.apply(target, slice(arguments, 0, -1));
    });
}
function invoker(method) {
  return invokerN(method.length, method);
}
// Usage:
R.substring = invoker(String.prototype.substring);
```