Add destroy hooks for several GL objects.

These hooks allow the back-end renderer to free object resources
without having to store pointers to shared device handles for
each and every object. This will allow us to save memory on
back-ends that really care about memory overhead.

There is a downside in that there is more boilerplate in passing
gl::Context handles around everywhere.

BUG=angleproject:1684

Change-Id: I89463bba8d23f92920e8956650cb73c7fc6d66b7
Reviewed-on: https://chromium-review.googlesource.com/426401
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/ContextState.cpp b/src/libANGLE/ContextState.cpp
index d169e00..1d132d0 100644
--- a/src/libANGLE/ContextState.cpp
+++ b/src/libANGLE/ContextState.cpp
@@ -95,14 +95,7 @@
 
 ContextState::~ContextState()
 {
-    mBuffers->release();
-    mShaderPrograms->release();
-    mTextures->release();
-    mRenderbuffers->release();
-    mSamplers->release();
-    mFenceSyncs->release();
-    mPaths->release();
-    mFramebuffers->release();
+    // Handles are released by the Context.
 }
 
 const TextureCaps &ContextState::getTextureCap(GLenum internalFormat) const