Add support for EGL_ANDROID_blob_cache

The functionality of MemoryProgramCache is divided up in two.  BlobCache
is now a generic binary cache, which interfaces with the callbacks from
EGL_ANDROID_blob_cache.  MemoryProgramCache handles program
[de]serialization and interacts with BlobCache.

Bug: angleproject:2516
Change-Id: Ie4328a2e56a26338e033d84f4e53a1103411937d
Reviewed-on: https://chromium-review.googlesource.com/1194285
Commit-Queue: Shahbaz Youssefi <syoussefi@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/Program.cpp b/src/libANGLE/Program.cpp
index bd05861..075ab49 100644
--- a/src/libANGLE/Program.cpp
+++ b/src/libANGLE/Program.cpp
@@ -600,7 +600,7 @@
 {
     const Context *context;
     std::unique_ptr<ProgramLinkedResources> resources;
-    ProgramHash programHash;
+    egl::BlobCache::Key programHash;
     std::unique_ptr<rx::LinkEvent> linkEvent;
 };
 
@@ -1114,7 +1114,7 @@
         return NoError();
     }
 
-    ProgramHash programHash   = {0};
+    egl::BlobCache::Key programHash = {0};
     MemoryProgramCache *cache = context->getMemoryProgramCache();
 
     if (cache)