Implement QueryGL.

Passes all tests in:
 * dEQP-GLES3.functional.occlusion_query
 * angle_end2end_tests

BUG=angleproject:887

Change-Id: I643ab4c28cb545de9e7b0e1740e3fd8e2aa9d3d9
Reviewed-on: https://chromium-review.googlesource.com/302338
Reviewed-by: Jamie Madill <jmadill@chromium.org>
Tryjob-Request: Geoff Lang <geofflang@chromium.org>
Tested-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/Context.cpp b/src/libANGLE/Context.cpp
index 7077782..e31a8b7 100644
--- a/src/libANGLE/Context.cpp
+++ b/src/libANGLE/Context.cpp
@@ -66,7 +66,13 @@
     : mRenderer(renderer),
       mConfig(config),
       mCurrentSurface(nullptr),
-      mData(clientVersion, mState, mCaps, mTextureCaps, mExtensions, nullptr)
+      mData(reinterpret_cast<uintptr_t>(this),
+            clientVersion,
+            mState,
+            mCaps,
+            mTextureCaps,
+            mExtensions,
+            nullptr)
 {
     ASSERT(robustAccess == false);   // Unimplemented
 
@@ -168,7 +174,10 @@
 
     for (auto query : mQueryMap)
     {
-        query.second->release();
+        if (query.second != nullptr)
+        {
+            query.second->release();
+        }
     }
 
     for (auto vertexArray : mVertexArrayMap)