Instead of decoding all animation frames at once in decode_webp_image()
and caching them in frame_descriptors, decode frames one at a time
on demand. This avoids holding all decoded frames in memory at once.
The WebPAnimDecoder is kept alive across frame() calls and supports
reset for backward seeks (needed for animation looping).