tint/ast: Remove ast::StorageTexture

Instead use ast::TypeName.

Also improve the validation and diagnostics around providing template
arguments to types that do not accept them.

Bug: tint:1810
Change-Id: I4241d50ce0425ab721157686889e918993482876
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/119284
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
Reviewed-by: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Ben Clayton <bclayton@chromium.org>
diff --git a/src/tint/intrinsics.def b/src/tint/intrinsics.def
index db589a1..c490482 100644
--- a/src/tint/intrinsics.def
+++ b/src/tint/intrinsics.def
@@ -176,6 +176,11 @@
   texture_depth_cube
   texture_depth_cube_array
   texture_depth_multisampled_2d
+  // https://www.w3.org/TR/WGSL/#texture-storage
+  texture_storage_1d
+  texture_storage_2d
+  texture_storage_2d_array
+  texture_storage_3d
   // https://www.w3.org/TR/WGSL/#external-texture-type
   texture_external
 }