Add BufferItemConsumer, a simple BufferQueue consumer.

BufferItemConsumer allows for acquiring BufferQueue's BufferItems,
which contain all the data and metadata the BufferQueue has for a
given graphics buffer.

This consumer is useful when direct access to the native buffer_handles
is needed by the client.

Also includes a minor cleanup of CpuConsumer's use of 'virtual'.

Bug: 6243944
Change-Id: If7dc4192b15ac499555f1eda42a85140f2434795
diff --git a/include/gui/CpuConsumer.h b/include/gui/CpuConsumer.h
index 49c90db..807a4b5 100644
--- a/include/gui/CpuConsumer.h
+++ b/include/gui/CpuConsumer.h
@@ -59,6 +59,8 @@
     // how many buffers can be locked for user access at the same time.
     CpuConsumer(uint32_t maxLockedBuffers);
 
+    virtual ~CpuConsumer();
+
     // set the name of the CpuConsumer that will be used to identify it in
     // log messages.
     void setName(const String8& name);
@@ -86,7 +88,7 @@
     // Maximum number of buffers that can be locked at a time
     uint32_t mMaxLockedBuffers;
 
-    void freeBufferLocked(int slotIndex);
+    virtual void freeBufferLocked(int slotIndex);
 
     // Array for tracking pointers passed to the consumer, matching the
     // mSlots indexing