Split invoker to invoker and invokerN

- Eliminate optional argument.
- Remove unnecessary check for `arguments.length`.
- Add unit tests.
Why use mutation, though, if we can avoid it? This makes we wish we had the function that is to `R.last` as `R.tail` is to `R.head`:

```javascript
var list = ['a', 'b', 'c', 'd', 'e'];
//  head :  ^^^
//  tail :       ^^^^^^^^^^^^^^^^^^
//  last :                      ^^^
//  ???? :  ^^^^^^^^^^^^^^^^^^
```