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/validationES_unittest.cpp b/src/libANGLE/validationES_unittest.cpp
index 586bd71..5d412d8 100644
--- a/src/libANGLE/validationES_unittest.cpp
+++ b/src/libANGLE/validationES_unittest.cpp
@@ -97,7 +97,7 @@
 
     state.setVertexArrayBinding(vertexArray);
     state.setDrawFramebufferBinding(framebuffer);
-    state.setProgram(program);
+    state.setProgram(nullptr, program);
 
     NiceMock<MockValidationContext> testContext(nullptr, nullptr, Version(3, 0), &state, caps,
                                                 textureCaps, extensions, limitations, false);
@@ -119,7 +119,7 @@
 
     state.setVertexArrayBinding(nullptr);
     state.setDrawFramebufferBinding(nullptr);
-    state.setProgram(nullptr);
+    state.setProgram(nullptr, nullptr);
 
     SafeDelete(vertexArray);
     SafeDelete(framebuffer);