Normalization in the animation code was a bad idea.
New animation code:
 * Times are specified in offset relative to the start, not as a linear instruction set, so nothing 'blocks'.
 * Initial values are assumed to be current values. Issue a 'set' instruction if this is not the case.
Replace hand animations, also noting some issues with radian discontinuities.
Replace book animations.
Port animation queue and menu animations to new animation code.
Prevent winning while quitting and quitting while winning, which doubled up the menu.
Remove old animation code.
Add 'tweens' instruction, like 'tween' but works on a map of objects.
Use tweens instruction many more places.
Merge book animation structures.
Fix lock reordering causing continuous undo to fail.
Fix off-by-one animation errors by attaching tweeners before the animator component. (But this is probably a short-term solution.)
Add 'duration' as an alternative to 'completed' for animation data.
Fix animation data for book color fade.
Simplify some game logic checks using yf
It's redundant to flag this data as ANIM.
Change 'tween' to 'tween1', 'tweens' to 'tween'. Make 'set' work like 'tween' and add new 'set1' instruction.
Simplify tweener initialization/running with yf.
Since KEYBINDS is not the identical keybind set used by the director anyway anymore, it doesn't need to be an actual yuu.KeyBindSet instance. And then KeyBindSet doesn't need to know how to clone in its constructor.