As mentioned, AnimationState now has multiple tracks so can apply multiple animations each frame without needing to use the relatively low-level Animation API directly. If you still want to, apply has some new parameters for allowing events to be fired:
// If you used to call this:
animation.apply(skeleton, animationTime, loop);
// You can call this to do the same thing:
animation.apply(skeleton, animationTime, animationTime, loop, null);
Applying in this way won't fire events, but that may not matter if you don't use them. If you do, lastTime is the animationTime the animation was last applied and events is a list that is populated with any events that were fired when the animation was applied. Again, it is easiest to use AnimationState which handles this for you, has multiple tracks, has queued animations, and provides callback functions for when an animation starts, ends, completes one loop, and when an event fires.