Extract animation controls into specialised classes

Cleans up the code for when controls need to adjust their state based on the
state of the animation as a whole