Latest ProfileMatch

Fixed error where loadData didn't load group info. Fixed error where TreeSet thought everything was the same object by replacin it with a HashSet and special hashCode and equalsTo methods in ProfileMatch. Made it so FindGroupBestMatch only finds matches if the id supplied is the same as the group supplied. I'm not sure if it's supposed to work that way, but they didn't answer my piazza, so I'll find out during Web-cat submission I guess.