implement pushing

This was surprisingly complicated!
fix an animation glitch

If a push led to a fall, the fall could join before the fall animation
completed.
dynamically fill level picker