Some small updates

Notables:

I have removed a couple of locks in LocalizingService around access to HttpRuntime.Cache, on the reasoning that these accesses were read-only so locking was superfluous. Now locking only happens in LocalizingService once per language init (not per request) so this should improve concurrency greatly on busy servers.

Other logic change was to look out for PO files that are mere shells (with no msgstr values set) and to treat them as language unavailable. This was to solve issue with language coming up as available when it wasn't really, only the PO file was there due to gettext merge during build picking up a locale folder that was previously created by CreateEmptyMessages.