re-expand bundle if caches directory has been cleared

If we're worried about thread safety here, I'd be tempted to put expandBundleAndSave's work into a serial dispatch queue instead. (That combined with some cheap filesystem check would also get rid of the `dispatch_once`, and possibly prevent needless overwriting across app restarts.)

Then the only race we have is with misbehaving apps and with the OS getting caught in the act of clearing the cache. I'm not really worried about the former -- seems unlikely, and anyway Don't Do That.

The latter is a problem, but enumerating the directory contents isn't better in that regard than checks for directory existence, or the `passesSelfTest` code, or anything whose output might go out of date. (Otherwise, we might properly inflate the bundle, the OS could clear the caches, and then the bundle is useless.) One way to properly fix that is to discover the error when *using* the bundle and recreate then. For example we could use some fancy embedding/composition and message forwarding to intercept all `NSBundle` calls and re-inflate lazily when we discover they fail (with protection against infinite recreation on programmer error). Or we could use some (cheap!) dispatch queue based filesystem monitoring to discover when our cache is getting cleared, set a flag appropriately, and recreate based on that flag.

Or we could just live with the race for now. I'm inclined towards living with it; all the solutions are complicated. How often does it happen in practice? If we really want to fix it, I guess I least dislike the filesystem monitoring idea.