Reland: WebGPU decoder: Add Associate/Dissociate mailbox

Reland with a fix for missing immediate data storage in the decoder
unittests.

These WebGPU IPC commands allows wrapping a mailbox in a Dawn texture
and associate it to a given ID in dawn_wire. There is the respective
dissociate command too.

SharedImageRepresentationIOSurfaceDawn is changed to destroy() the Dawn
texture on EndAccess so it is an error to access the texture after the
mailbox has been dissociated. The class also gets some refcounting
improvements.

This also makes some GPU service objects able to be used when no GL
context is present, as is the case when running WebGPU unittests.

BUG=chromium:877147

Change-Id: Ib0c8f6251441c9dbe69252773279b53a1fec3736
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1577422
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#653366}
35 files changed