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.
Is it intentional that we don't set the cache variable here? Usually a getter which looks in a cache and then computes something slowly would set the cache so next time would be fast.