Add an ImplFactory base class.

This class helps make mocking easier for unit tests.

Also update the back-end generator script.

BUG=angleproject:942

Change-Id: Ib0cee2b40c3a0faaac32b22c986b824b7b2dddde
Reviewed-on: https://chromium-review.googlesource.com/258900
Reviewed-by: Brandon Jones <bajones@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
Tested-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/libANGLE/Framebuffer.h b/src/libANGLE/Framebuffer.h
index 241d1c8..08fab9d 100644
--- a/src/libANGLE/Framebuffer.h
+++ b/src/libANGLE/Framebuffer.h
@@ -53,7 +53,7 @@
     class Data final
     {
       public:
-        Data(const Caps &caps);
+        explicit Data(const Caps &caps);
         ~Data();
 
         FramebufferAttachment *getReadAttachment() const;