EAV extract format

I was already thinking this, but maybe it might be better if `SquashJob.squashFromSnapshot` takes a callback so it can handle the deletion in one place? I know it's one those yucky "hole in the middle" things, but it seems better than relying on all consumers to delete the file?