refactored animation class to use small functions

also changed Snowflake class to SnowflakeGroup, an extension of
GCompound
Tried to reduce number of argument-changers

as per book "Clean Code", functions that change their argument can be
confusing.  I still have a few, but got rid of many by encapsulating
SnowflakeGroup construction inside that class, which makes much more
sense than having it inside the Animation class, where it was
previously.