[WebGPU] Return empty pooling outputs without dispatching (#33668)
### Description
Return empty WebGPU pooling outputs after shape validation and
allocation, before constructing a GPU program or dispatch. Add
regression coverage for AveragePool, MaxPool and global pooling in
NCHW/NHWC, including small/large windows and empty batches, with CPU
fallback disabled.
### Motivation and Context
An unpadded 65x65 AveragePool window over a nonempty 64x64 input
produces an empty output. WebGPU currently attempts a zero-sized
dispatch and fails instead of returning that output.
Fixes #32841.
### Validation
- Native Windows x64, bundled Dawn/D3D12: 85 pooling tests passed; 2
DirectML-only tests skipped.
- All 3 new tests (16 scenarios) failed before the fix and passed
afterward.
- The original issue model passed three repeated runs per layout with
full validation and CPU fallback disabled.
- Lintrunner and `git diff --check` passed.
Metal, browser/Wasm and plugin configurations were not tested.