Implement Buffer::MapAsync

MapAsync in dawn_native is fully implemented and only missing
a couple cleanups that can be done once MapRead/WriteAsync are
removed.

MapAsync in dawn_wire is left as a pure shim on top of
MapRead/WriteAsync and will be transitioned to its own commands
in follow-ups.

All MapRead/WriteAsync end2end and validation tests are duplicated
for MapAsync.

Bug: dawn:445

Change-Id: Ib1430b9257149917be19a84f13e0ddd2a8eccc32
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/24260
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
Reviewed-by: Stephen White <senorblanco@chromium.org>
diff --git a/dawn_wire.json b/dawn_wire.json
index 6279f05..8bbb473 100644
--- a/dawn_wire.json
+++ b/dawn_wire.json
@@ -102,6 +102,7 @@
             "SurfaceDescriptorFromXlib"
         ],
         "client_side_commands": [
+            "BufferMapAsync",
             "BufferMapReadAsync",
             "BufferMapWriteAsync",
             "BufferSetSubData",