[WebGPU] Validate MatMul execution plans in planner (#33288)
### Description
- Change `MatMulExecutionPlanner::CreateExecutionPlan` to return
`Status` and publish its output plan only after validation succeeds.
- Validate algorithm/configuration compatibility, host-known algorithm
prerequisites, packed tuning, subgroup size agreement, and overflow-safe
packed/Split-K dispatch arithmetic in the planner.
- Remove duplicated prerequisite reconstruction and validation from
`MatMulComputeDispatcher`.
- Add contract tests for unsupported forced requests, unchanged output
on failure, invalid vendor configurations, and dispatch overflow.
- Update the WebGPU MatMul planner design documentation.
### Motivation and Context
Follow-up to #32630. A successful `CreateExecutionPlan` should mean that
the returned plan is executable for all prerequisites already known to
the host. Previously the planner returned an unchecked proposal and the
dispatcher reconstructed the same prerequisite facts to validate it,
which weakened the plan contract and allowed the two paths to drift.
Forced test selections still bypass performance heuristics, but
unsupported requests now fail in plan creation without silently falling
back.
### Testing
- Static Vulkan `onnxruntime_provider_test` build
- 41 planner, configuration, and execution-plan validation tests passed
- 22 hardware-backed forced MatMul, FP32 accumulation, Split-K, dynamic
reselection, and pointwise Conv tests passed
- WebGPU plugin library target built successfully
The full local plugin `onnxruntime_provider_test` link remains blocked
by an existing MSVC `C4744` Abseil/GoogleTest signedness warning
promoted to `C2220`, followed by `LNK1257`; no changed planner source
failed compilation.