only set the opt.cache if one hasn't been provided

required is overwriting opt.cache even when I pass one in for some reason. I need to pass an explicit cache so I can:

1. hackishly get the entry_parent for the main file
2. thread the cache across multiple calls to required to avoid traversing the same files multiple times