Add gl::RenderbufferState shared state helper.

This shared state will be read-only visible in the RenderbufferImpl
class. It mirrors existing structs for Textures, Buffers, and other
classes. It allows the implementation class to have a read-only view
as to the current GL state of an object.

This will be useful to the Vulkan back-end, which would like to know
the current Renderbuffer state before having to redefine the storage.
If the current parameters match, it might not have to redefine the
storage at all.

The solution involves passing around the gl::RenderbufferState
through various factory methods.

Also name the Renderbuffer implementation pointer consistently and
make it use std::unique_ptr.

Bug: angleproject:2347
Change-Id: Ied6e0358e24e74a7fedbe4aea692edee909b5838
Reviewed-on: https://chromium-review.googlesource.com/922457
Commit-Queue: Jamie Madill <jmadill@chromium.org>
Reviewed-by: Geoff Lang <geofflang@chromium.org>
diff --git a/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp b/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp
index 6d8d113..1689c66 100644
--- a/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp
+++ b/src/libANGLE/renderer/vulkan/RenderbufferVk.cpp
@@ -16,7 +16,8 @@
 namespace rx
 {
 
-RenderbufferVk::RenderbufferVk() : RenderbufferImpl(), mRequiredSize(0)
+RenderbufferVk::RenderbufferVk(const gl::RenderbufferState &state)
+    : RenderbufferImpl(state), mRequiredSize(0)
 {
 }