I added the third parameter in the previous commit without exploring the
consequences. Now I see that string_exists is called too many often and
it must not rebuild caches again and again.
If the string is not found, core_string_manager tries to re-fetch master
sources. This prevents false debugging messages in case when the on-disk
cache is dirty. Thanks to Eloy, Tim and Petr for the ideas.
Version bump needed so that the cache is cleared on upgrade. Cached
files are now valid PHP files instead of fetching them into string and
running eval(). Credit goes to skodak.
The results of merged en + en_local + parentlang + parentlang_local +
lang + lang_local are now saved into disk cache in dataroot/cache/lang/.
The number of get_string() calls, and number of mem cache and disk cache
hits are part of performance logging.
Disk cache must be removed whenever the language packs or their local
customizations are deleted. Disk cache is rebuilt automatically.