Split invoker to invoker and invokerN

- Eliminate optional argument.
- Remove unnecessary check for `arguments.length`.
- Add unit tests.
@buzzdecafe I think we'd want an `Either` here, not a `Maybe`, but I'm not sure it's relevant in either case.

@fson: Throwing an exception was the easiest thing to demonstrate.  The point was that _anything_ can happen.  If the object in question had an only-call-in-case-of-emergencies `shuffle` method, well, someone better be prepared for the fallout.

As I said, this is mostly a caveat to my thumbs-up.  I still think it's probably a good idea, and allowing the duck-typing of these functions where we want them (`slice` on `arguments`) probably outweighs the fairly unlikely scenarios of this sort of misuse.  But I think we should go into it with our eyes open.