gdi/epng,gpixmap: Implement a duplicate pixmap caching scheme.

The UI tends to load the same pixmaps multiple times, thus wasting
memory. Keep a (weak ref) list of pixmaps and their filenames, and
return an existing one if possible. Rely on ePtr refcounting to
manage the pixmap's lifetime.

Good news is that gpixmap didn't suffer, introducing the disposal
callback removed the need for a "must dispose" boolean.