[gif] - add gif support via giflib

This is a split off from #5166

This removes the old animatedgif impl. I was not able to test if this introduces regressions in any way. I just don't know how to trigger that old animatedgif code to verify that it still works.

We use giflib5 for depends and windows - but the implementation also supports the giflib4 api.
By the looks this is causing large copies when popping a frame into the vector (it'll call the GifFrame copy constructor).  i.e. you'd need to be careful to fill the appropriately sized vector of empty GifFrame's first and then allocate then directly from the vector.

The alternative is to make it a vector of smart pointers.  That way you won't incur the copy overhead when popping the frames into the vector.