Split invoker to invoker and invokerN

- Eliminate optional argument.
- Remove unnecessary check for `arguments.length`.
- Add unit tests.
if you want 

```
var list  = ['a', 'b', 'c', 'd', 'e'];
//anti-tail: ^^^^^^^^^^^^^^^^^^
```

you can `tail(reverse(list))`. 

100% agree with @davidchambers `head + tail = list`, which implies `head == first (== car)`