Fix BL-685: problems with getting proper language displayed on cover

The real fix here was just to have the Bloom constructor call
InjectStringListingActiveLanguagesOfBook(). Before this only happened
if you did an UpdateBook or fiddled with the multilingual settings.
The rest is just adding tests and small renaming for clarity.
I wasn't looking for a big refactoring. The usual pattern for a method like this would be something like

if (string.IsNullOrEmpty(Language1Name)
  this.Language1Name = GetLanguage1Name_NoCache(inLanguage);
return Language1Name;

However there are clearly some complexities with the inLanguage argument (I see looking that the whole file that Language1Name is typically set based on language 2's code) so what you have may well be as good as is achievable without dangerous complications.