WebGPU decoder: Add Associate/Dissociate mailbox

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: I22233d01faf4948385cc028a7ce2a2a140ee7a1d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1566347
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Cr-Commit-Position: refs/heads/master@{#652825}
35 files changed