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);