Most of the actual "work" done with Web GPU actually uses a `WebGPUDevice`. A `GPUCanvasContext` is basically just a display "client" of the device, and isn't even required (e.g. compute pipeline). We should treat the `GPUCanvasContext` almost like a `-webkit-canvas` client of a `WebGPUDevice`. This change should also carry to the frontend (e.g. use "Device" instead of "Canvas"/"Context").