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.
This line is necessary because it allows the target function to manipulate self._groups. For example, target can remove a group if it is no longer necessary.