Use std::unordered_map in ResourceManager.

The hashed query performs significantly faster than std::map.
This improves performance in applications which use Bind* often.

Also use the same scheme for the Context-managed resources.

BUG=angleproject:1333

Change-Id: I8a1f25d80e060c62dab1f86005e1bc4df1c06dba
Reviewed-on: https://chromium-review.googlesource.com/331387
Reviewed-by: Zhenyao Mo <zmo@chromium.org>
Commit-Queue: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/ResourceManager.cpp b/src/libANGLE/ResourceManager.cpp
index db2c55f..3872d39 100644
--- a/src/libANGLE/ResourceManager.cpp
+++ b/src/libANGLE/ResourceManager.cpp
@@ -82,7 +82,7 @@
 {
     GLuint handle = mBufferHandleAllocator.allocate();
 
-    mBufferMap[handle] = NULL;
+    mBufferMap[handle] = nullptr;
 
     return handle;
 }
@@ -116,7 +116,7 @@
 {
     GLuint handle = mTextureHandleAllocator.allocate();
 
-    mTextureMap[handle] = NULL;
+    mTextureMap[handle] = nullptr;
 
     return handle;
 }
@@ -126,7 +126,7 @@
 {
     GLuint handle = mRenderbufferHandleAllocator.allocate();
 
-    mRenderbufferMap[handle] = NULL;
+    mRenderbufferMap[handle] = nullptr;
 
     return handle;
 }
@@ -136,7 +136,7 @@
 {
     GLuint handle = mSamplerHandleAllocator.allocate();
 
-    mSamplerMap[handle] = NULL;
+    mSamplerMap[handle] = nullptr;
 
     return handle;
 }
@@ -155,7 +155,7 @@
 
 void ResourceManager::deleteBuffer(GLuint buffer)
 {
-    BufferMap::iterator bufferObject = mBufferMap.find(buffer);
+    auto bufferObject = mBufferMap.find(buffer);
 
     if (bufferObject != mBufferMap.end())
     {
@@ -167,7 +167,7 @@
 
 void ResourceManager::deleteShader(GLuint shader)
 {
-    ShaderMap::iterator shaderObject = mShaderMap.find(shader);
+    auto shaderObject = mShaderMap.find(shader);
 
     if (shaderObject != mShaderMap.end())
     {
@@ -186,7 +186,7 @@
 
 void ResourceManager::deleteProgram(GLuint program)
 {
-    ProgramMap::iterator programObject = mProgramMap.find(program);
+    auto programObject = mProgramMap.find(program);
 
     if (programObject != mProgramMap.end())
     {
@@ -205,7 +205,7 @@
 
 void ResourceManager::deleteTexture(GLuint texture)
 {
-    TextureMap::iterator textureObject = mTextureMap.find(texture);
+    auto textureObject = mTextureMap.find(texture);
 
     if (textureObject != mTextureMap.end())
     {
@@ -217,7 +217,7 @@
 
 void ResourceManager::deleteRenderbuffer(GLuint renderbuffer)
 {
-    RenderbufferMap::iterator renderbufferObject = mRenderbufferMap.find(renderbuffer);
+    auto renderbufferObject = mRenderbufferMap.find(renderbuffer);
 
     if (renderbufferObject != mRenderbufferMap.end())
     {
@@ -253,11 +253,11 @@
 
 Buffer *ResourceManager::getBuffer(unsigned int handle)
 {
-    BufferMap::iterator buffer = mBufferMap.find(handle);
+    auto buffer = mBufferMap.find(handle);
 
     if (buffer == mBufferMap.end())
     {
-        return NULL;
+        return nullptr;
     }
     else
     {
@@ -267,11 +267,11 @@
 
 Shader *ResourceManager::getShader(unsigned int handle)
 {
-    ShaderMap::iterator shader = mShaderMap.find(handle);
+    auto shader = mShaderMap.find(handle);
 
     if (shader == mShaderMap.end())
     {
-        return NULL;
+        return nullptr;
     }
     else
     {
@@ -281,13 +281,14 @@
 
 Texture *ResourceManager::getTexture(unsigned int handle)
 {
-    if (handle == 0) return NULL;
+    if (handle == 0)
+        return nullptr;
 
-    TextureMap::iterator texture = mTextureMap.find(handle);
+    auto texture = mTextureMap.find(handle);
 
     if (texture == mTextureMap.end())
     {
-        return NULL;
+        return nullptr;
     }
     else
     {
@@ -297,11 +298,11 @@
 
 Program *ResourceManager::getProgram(unsigned int handle) const
 {
-    ProgramMap::const_iterator program = mProgramMap.find(handle);
+    auto program = mProgramMap.find(handle);
 
     if (program == mProgramMap.end())
     {
-        return NULL;
+        return nullptr;
     }
     else
     {
@@ -311,11 +312,11 @@
 
 Renderbuffer *ResourceManager::getRenderbuffer(unsigned int handle)
 {
-    RenderbufferMap::iterator renderbuffer = mRenderbufferMap.find(handle);
+    auto renderbuffer = mRenderbufferMap.find(handle);
 
     if (renderbuffer == mRenderbufferMap.end())
     {
-        return NULL;
+        return nullptr;
     }
     else
     {
@@ -329,7 +330,7 @@
 
     if (sampler == mSamplerMap.end())
     {
-        return NULL;
+        return nullptr;
     }
     else
     {
@@ -343,7 +344,7 @@
 
     if (fenceObjectIt == mFenceSyncMap.end())
     {
-        return NULL;
+        return nullptr;
     }
     else
     {