Split invoker to invoker and invokerN

- Eliminate optional argument.
- Remove unnecessary check for `arguments.length`.
- Add unit tests.
A caveat to that, though, is that this change could cause errors to be thrown that wouldn't otherwise be thrown.  We'd have to decide if it's worth it.  It's probably a case of _caveat emptor_, but I'd like to think it through a little first.

The idea is this, totally untested:

```javascript
function Deck() { /* ... */ }
Deck.prototype.shuffle = function() { /* ... */ }
Deck.prototype.deal = function(howMany) {
    this.shuffle();
    // ...  
} //=> list of cards

// current behavior
var deal = invoker('deal', Deck.prototype);
var pokerHand = deal(5);
var deck = new Deck();
pokerHand(deck); //=> ['7d', 'Ah', 'Ac', '7s', '7c']  (full house, first try!)
var dealer = new Person();
pokerHand(dealer); //=> undefined
   
// suggested behavior
var deal = invoker(Deck.prototype.deal);
var pokerHand = deal(5);
var deck = new Deck();
pokerHand(deck); //=> ['2d', 'Ah', '6c', '4s', '3c']  (hope we're playing Omaha!)
var dealer = new Person();
pokerHand(dealer); //=> Error: dealer does not have `shuffle`
```