Refactored Group to maintain a Hash of words and counts instead of a list of words
Refactored Group to maintain a Hash of words and counts instead of a list of words

This provides three improvements over the old code:
* Counting is a Hash lookup instead of an inject, thus fast.
* Upping the word count is more memory efficient than keeping multiple copies of the same string around.
* The code is way more readable due to its simplicity

Narnach/groupie,Narnach/groupie