Layer Caching

Generating layers for each version can be taxing. This adds in caching to preserve layer data that doesn't change between versions. It's intentionally pretty dumb and so only works on a few layers. Seems to help a lot, though.