Made the color interchange algorithm a bit more simple, implemented __slots__ in the interchange helper classes, and added more tests