Add a new implementation of `groupby` that uses two dicts.

The previous commit was wrong.  It is slower than the commit before.
There was a mistake in the code used for benchmarks.

I believe the new implementation has optimal performance as groups
get larger.  It is also fast when creating a new group.  It is slowest
when each group has two or three items in it, but it is still fast
enough so as to not impact the general performance of the algorithm.

A note on size: using a second dict in the implementation doesn't
add much memory.  Let us consider the size used by all of the
containers--dicts and lists--but not their contents.  For the worst
case scenario in which both dicts have two items (note that `fastdict`
only has groups of length two or greater), memory usage is only
increased by about 25% by having a second dict.