Add animation framework

Added an animation scheduler. Currently only supports range-based
animation, but will eventually support time-based scheduling and
mouse-event animation