zink: pipeline caching
this reuses the disk cache infrastructure to handle caching pipeline objects. some future improvements can be made here to maybe try and get incremental updating to work (so that crashes don't require regenerating all the pipelines), but the basics are here