Descriptorize Texture

This patch introduces texture descriptor for texture creation instead
of texture builders.

This patch also adds "arrayLayer" to texture descriptor and removes
mDevice in TextureD3D12.
diff --git a/examples/CppHelloTriangle.cpp b/examples/CppHelloTriangle.cpp
index ea3578b..bf331df 100644
--- a/examples/CppHelloTriangle.cpp
+++ b/examples/CppHelloTriangle.cpp
@@ -48,13 +48,16 @@
 }
 
 void initTextures() {
-    texture = device.CreateTextureBuilder()
-        .SetDimension(dawn::TextureDimension::e2D)
-        .SetExtent(1024, 1024, 1)
-        .SetFormat(dawn::TextureFormat::R8G8B8A8Unorm)
-        .SetMipLevels(1)
-        .SetAllowedUsage(dawn::TextureUsageBit::TransferDst | dawn::TextureUsageBit::Sampled)
-        .GetResult();
+    dawn::TextureDescriptor descriptor;
+    descriptor.dimension = dawn::TextureDimension::e2D;
+    descriptor.width = 1024;
+    descriptor.height = 1024;
+    descriptor.depth = 1;
+    descriptor.arrayLayer = 1;
+    descriptor.format = dawn::TextureFormat::R8G8B8A8Unorm;
+    descriptor.mipLevel = 1;
+    descriptor.usage = dawn::TextureUsageBit::TransferDst | dawn::TextureUsageBit::Sampled;
+    texture = device.CreateTexture(&descriptor);
 
     dawn::SamplerDescriptor samplerDesc = utils::GetDefaultSamplerDescriptor();
     sampler = device.CreateSampler(&samplerDesc);
diff --git a/examples/SampleUtils.cpp b/examples/SampleUtils.cpp
index 9055476..8d459db 100644
--- a/examples/SampleUtils.cpp
+++ b/examples/SampleUtils.cpp
@@ -136,13 +136,16 @@
 }
 
 dawn::TextureView CreateDefaultDepthStencilView(const dawn::Device& device) {
-    auto depthStencilTexture = device.CreateTextureBuilder()
-        .SetDimension(dawn::TextureDimension::e2D)
-        .SetExtent(640, 480, 1)
-        .SetFormat(dawn::TextureFormat::D32FloatS8Uint)
-        .SetMipLevels(1)
-        .SetAllowedUsage(dawn::TextureUsageBit::OutputAttachment)
-        .GetResult();
+    dawn::TextureDescriptor descriptor;
+    descriptor.dimension = dawn::TextureDimension::e2D;
+    descriptor.width = 640;
+    descriptor.height = 480;
+    descriptor.depth = 1;
+    descriptor.arrayLayer = 1;
+    descriptor.format = dawn::TextureFormat::D32FloatS8Uint;
+    descriptor.mipLevel = 1;
+    descriptor.usage = dawn::TextureUsageBit::OutputAttachment;
+    auto depthStencilTexture = device.CreateTexture(&descriptor);
     return depthStencilTexture.CreateTextureViewBuilder()
         .GetResult();
 }
diff --git a/examples/glTFViewer/glTFViewer.cpp b/examples/glTFViewer/glTFViewer.cpp
index 85b3c43..e80aab3 100644
--- a/examples/glTFViewer/glTFViewer.cpp
+++ b/examples/glTFViewer/glTFViewer.cpp
@@ -382,13 +382,16 @@
                     continue;
             }
 
-            auto oTexture = device.CreateTextureBuilder()
-                .SetDimension(dawn::TextureDimension::e2D)
-                .SetExtent(iImage.width, iImage.height, 1)
-                .SetFormat(format)
-                .SetMipLevels(1)
-                .SetAllowedUsage(dawn::TextureUsageBit::TransferDst | dawn::TextureUsageBit::Sampled)
-                .GetResult();
+            dawn::TextureDescriptor descriptor;
+            descriptor.dimension = dawn::TextureDimension::e2D;
+            descriptor.width = iImage.width;
+            descriptor.height = iImage.height;
+            descriptor.depth = 1;
+            descriptor.arrayLayer = 1;
+            descriptor.format = format;
+            descriptor.mipLevel = 1;
+            descriptor.usage = dawn::TextureUsageBit::TransferDst | dawn::TextureUsageBit::Sampled;
+            auto oTexture = device.CreateTexture(&descriptor);
                 // TODO: release this texture
 
             const uint8_t* origData = iImage.image.data();