[iOS][Translate] Moves LanguageSelectionHnadler out of infobarcoordinator

Instead of passing the id<LanguageSelectionHandler> to the
ChromeIOSTranslateClient during construction which is prone to error due to
dependency on the order in which ChromeIOSTranslateClient and
the InfobarCoordinator are initialized, this CL modifies the
LanguageSelectionCoordinator to observe the WebStateList and set/unset the
id<LanguageSelectionHandler> on instances of ChromeIOSTranslateClient when
appropriate.

This fixes a DCHECK during ChromeIOSTranslateClient construction and helps
make the feature more self-contained as the InfobarCoordinator/Mediator no
longer needs to know about the languageSelectionHandler.

TBR=rohitrao@

Bug: 912502
Change-Id: Id3769f10a0ed638821afdd9578bd263700768299
Reviewed-on: https://chromium-review.googlesource.com/c/1366467
Commit-Queue: Moe Ahmadi <mahmadi@chromium.org>
Reviewed-by: edchin <edchin@chromium.org>
Reviewed-by: Sergio Collazos <sczs@chromium.org>
Reviewed-by: anthonyvd <anthonyvd@chromium.org>
Cr-Commit-Position: refs/heads/master@{#615500}
16 files changed