Simplify and optimise languages validation
Simplify and optimise languages validation

Now caches the available languages at class load time and uses the Set
data structure to simplify and optimise validation of selected
languages.

The existing implementation involved a lot of nested loops which meant
its runtime would be sensitive to changes in the number of languages
available and selected. Our rough estimate of its running time
complexity was O(n^3).

The new approach guarantees the running time will not vary so much. It
should now be O(n).

moneyadviceservice/mas-rad_core,moneyadviceservice/mas-rad_core,moneyadviceservice/mas-rad_core