loose-assciations 0.2

+ The result is always safe, when a group is undersizes, it gets redistributed between the other groups.
+ When a row cannot be redistributed without breaking heterogenity it gets dropped and all the groups containing the row that are not full get redistributed. This lead to a chain of reditribute/delete until we reach a safe partitioning where every group respects the three heterogenity principles and also has at least k elements.
+ Add logging in order to check what the algorithm is doing.
+ Add statistics on group size.
+ Improve performaces keeping the index of the first non-full group for each fragment, so we can start to check for non-full groups from there.
+ There can be situations where adding a couple of groups over tuples/k can lead to better results. We log a warning message whenever we drop a tuple on the first scan because that tuple could be preserved allowing more groups. We don't allow infinite groups because if we have a very common attribute we can lead to non-terminant situations. So this tweak is left to the user.

This is a stable release that could be used for testing the algorithm.