Split invoker to invoker and invokerN

- Eliminate optional argument.
- Remove unnecessary check for `arguments.length`.
- Add unit tests.
@CrossEye I was thinking of calling the original function with the passed object as context not invoking a method of the object (`func` does that). So like this:
```js
var invokerN = R.invokerN = function invokerN(name, obj, len) {
    var method = obj[name];
    return method && curryN(len + 1, function() {
        var target = R.last(arguments);
        return method.apply(target, slice(arguments, 0, -1));
    });
};
```

One possible use case for this is turning `Array.prototype.slice` into a plain function:
```js
var slice = R.invokerN(1, 'slice', Array.prototype);
var last = slice(-1);
var fn = function () {
  return last(arguments);
}
fn(1, 2, 3);  //=> 3
```
Currently this returns `undefined` because `arguments` does not have that method.