Rudimentary gif support.

Still to do:
- work out the decoding errors (LZW?)
- integrate into programs
- load async and switch out at appropriate times