There are additional instance extensions that need to be enabled for
this. Having any one of them is sufficient on each of these platforms.
There were also some `VALIDATION_LOG`s that would fail in the process of
picking a valid physical device, this would incorrectly exit early when
there were multiple devices and a latter device is valid.
Also improves logging for playground when glfw fails to get a surface.
We've implemented UTF-8/UTF-16 string encoding conversions in multiple
places, from FML to //flutter/shell/platform/common, to the individual
embedders. This migrates these conversions to FML and adds tests.
Windows APIs use wchar_t-based strings and as a result, we continue to
keep Windows-specific functions in fml/platform/win/wstring_conversion.h.
We break out string_conversions into its own source set since FML brings
with it some Dart dependencies (e.g. dart_timestamp_provider.cc) that
are unused by some targets such as uwptool.exe in the Windows UWP
embedding.
Issue: https://github.com/flutter/flutter/issues/98061