Merge all gl::Texture* classes.

The validation for sampler completeness had a lot of duplicated code.
The special cases have been merged into the base class by checking mTarget.

BUG=angle:681

Change-Id: I11d94c1432f8fc70a1edaaf8228bbc43c3c8fff3
Reviewed-on: https://chromium-review.googlesource.com/236932
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/ResourceManager.cpp b/src/libANGLE/ResourceManager.cpp
index 299958c..75fbc64 100644
--- a/src/libANGLE/ResourceManager.cpp
+++ b/src/libANGLE/ResourceManager.cpp
@@ -370,30 +370,7 @@
 {
     if (!getTexture(texture) && texture != 0)
     {
-        Texture *textureObject;
-
-        if (type == GL_TEXTURE_2D)
-        {
-            textureObject = new Texture2D(mRenderer->createTexture(GL_TEXTURE_2D), texture);
-        }
-        else if (type == GL_TEXTURE_CUBE_MAP)
-        {
-            textureObject = new TextureCubeMap(mRenderer->createTexture(GL_TEXTURE_CUBE_MAP), texture);
-        }
-        else if (type == GL_TEXTURE_3D)
-        {
-            textureObject = new Texture3D(mRenderer->createTexture(GL_TEXTURE_3D), texture);
-        }
-        else if (type == GL_TEXTURE_2D_ARRAY)
-        {
-            textureObject = new Texture2DArray(mRenderer->createTexture(GL_TEXTURE_2D_ARRAY), texture);
-        }
-        else
-        {
-            UNREACHABLE();
-            return;
-        }
-
+        Texture *textureObject = new Texture(mRenderer->createTexture(type), texture, type);
         mTextureMap[texture] = textureObject;
         textureObject->addRef();
     }