Refactor the LZ tools and fix BSSReader's eval shenanigans.

- Relatively more accurate compression
- Generate relevant pic animation data (frames.asm, bitmask.asm) from images
- gfx.yaml

re BSSReader: Obviously the correct solution (besides ditching eval) is to occupy the `__builtins__` key. So that all keys can be real constants (i.e. when reversing the dict, as in this case) the dict is instead copied when passed into eval. In retrospect, the `__builtins__` key could just be removed once BSSReader is done.
maybe add an example?