Conformed to Googles c++ standard.
Increased efficiency by: keeping track of empty groups and only checking one point per group in getPossibleMoves, not calling getPossibleMoves when creating clones, and replacing Boost foreach with c++ 11 foreach loops.