Implement traditional group-by as found in most other languages like clojure/scala/ruby/etc

This default group-by logic is different from what is called groupby within itertools.