[js/webgpu] support using uniform buffer (#17803)
### Description
support using uniform buffer.
This PR allows to use uniform buffer in shader program, so that some
runtime information (eg. input/output shape) is no longer need to be
hardcoded into shader code.
There are 2 commits in this PR:
-
[667f31c](https://github.com/microsoft/onnxruntime/pull/17803/commits/667f31c83dcc5324427966063b62e9128fa30558):
framework changes to support uniform buffer, as well as updates in
program manager, gpu data manager and indices helper.
-
[09e1d2a](https://github.com/microsoft/onnxruntime/pull/17803/commits/09e1d2ad1de521f94a2eb27718262d1ccafa4b02):
an example change for operator `Transpose` to use input's rank-only
instead of dims as shader key. With this change, model mobilenetv2-12
shader compile times dropped from 71 to 52.