Add 1- and 2-component texture formats.

Implemented {uint8, unorm8} x {r, rg} texture formats.
Backend support added for Metal, D3D12 and OpenGL.
diff --git a/src/backend/metal/TextureMTL.mm b/src/backend/metal/TextureMTL.mm
index 034eb7f..f179108 100644
--- a/src/backend/metal/TextureMTL.mm
+++ b/src/backend/metal/TextureMTL.mm
@@ -22,8 +22,16 @@
         switch (format) {
             case nxt::TextureFormat::R8G8B8A8Unorm:
                 return MTLPixelFormatRGBA8Unorm;
+            case nxt::TextureFormat::R8G8Unorm:
+                return MTLPixelFormatRG8Unorm;
+            case nxt::TextureFormat::R8Unorm:
+                return MTLPixelFormatR8Unorm;
             case nxt::TextureFormat::R8G8B8A8Uint:
                 return MTLPixelFormatRGBA8Uint;
+            case nxt::TextureFormat::R8G8Uint:
+                return MTLPixelFormatRG8Uint;
+            case nxt::TextureFormat::R8Uint:
+                return MTLPixelFormatR8Uint;
             case nxt::TextureFormat::B8G8R8A8Unorm:
                 return MTLPixelFormatBGRA8Unorm;
             case nxt::TextureFormat::D32FloatS8Uint: