A MediaCapabilities decoder probe can start creating the GMP service on a
background thread and wait for main to initialize it. If an EME request
then calls HaveGMPFor on main, it waits for that pending service creation
and prevents the initialization runnable from executing.
Fix this by moving EME's GMP support checks to the PDM thread pool, so main
remains free to initialize the service. Assert that HaveGMPFor runs off
main to catch callers that could reintroduce the deadlock.
To consume those checks asynchronously, return a promise from
GetKeySystemStatus and continue request processing on main when it
resolves. Adapt CDM installation retries to await the status too, and
ignore results for requests that have expired or been shut down. Filter
supported key systems off main before assembling their configurations on
main; DOM promise settlement also stays on main.