Groupby2

Main purpose is to add kwargs to `for_each_group` to allow needed functionality in the counter.

Please review the tests, I have remove a test (simply returning at the beggining) and have commented about the test. The test fails, and I don't see how it wouldn't. I have left comments.
There is no advantage. I waffled back and forth between using a set and a list. Sets have no syntax for creating them, so I was using `set()` for the empty set, so I accidentally used the same syntax for the list.

It is just a convention I have picked up. Theoretically:
```
(), [], {} == tuple(), list(), dict()
```
But for tuple's and dict's I much prefer calling the builtin function.