[webgpu] fix program variable data type and revise ProgramInput (#24533)
### Description
This PR fixes the program variable data type and revise ProgramInput:
- add support for int4/uint4
- fix inconsistency of dealing with number of components for int8/uint8
in ToProgramVariableDataType
- add a constructor for `ProgramInput` to allow "flatten" the shape
easily.
- fix dequantize linear