The LanguageOverlay is an Overlay which overrides templatePartials.content to replace the body of the overlay element.
Similar to how we refactor the TalkOverlay in T215370 we will convert this to an Overlay which has a LanguageSearcher child.
This new component will look like this:
This change will span 2 directories.
= Acceptance criteria
 Minerva uses a languageOverlay factory function for generating the overlay used for the language feature inside resources/skins.minerva.scripts/init.js. As before it is associated with the route #/language
 There is no LanguageOverlay
 A new language widget is created
 The new language searcher component can be rendered outside an Overlay if wanted.
 Styles referring to the language-overlay class are scoped to the new component. Feel free to make use of BEM if that makes sense with the new class names.
 No changes have been made to the underlying behaviour of the overlay
 Consider moving the async api call from Minerva to getLanguages into the newly created MobileFrontend factory function (https://github.com/wikimedia/mediawiki-skins-MinervaNeue/blob/master/resources/skins.minerva.scripts/init.js#L158)
= QA steps
Exploratory testing needed for visual regressions and bugs.
* Click the language button to open the language overlay. This is what we want to test.
* Test the search filter feature by typing into "Search for a language"
* Test closing via back button and close icon
* Check you can click languages
* Close overlay and open again
* When clicking a language, we store that as a preferred language. Check that any previously clicked languages show on subsequent visits in SUGGESTED LANGUAGES
When looking for UI regressions compare all parts of the language workflow with what's currently on production, accessible via:
Note there is one expected UI regression: the spinner will now show inside the body of the language overlay