BufferHubQueueProducer reset buffers on disconnect

When Surface.cpp disconnects a IGraphicBufferProducer, it clears up all
the buffer cache it holds. Thus our implementation should do the same.

New tests:
1/ BufferHubQueueProducerTest.ConnectDisconnectReconnect: tests
   IGraphicBufferProducer to behave proper after disconnect and
   re-connect.
2/ BufferHubQueueTest.TestFreeAllBuffers: tests BufferHubQueue handles
   FreeAllBuffers() properly under different producer/consumer state.

Bug: 64402829
Test: Pause and resume GVR video player demo and observer no more fails
around IGraphicBufferProducer::requestBuffer and Surface::dequeueBuffer.
Change-Id: Ia61e3f991248135cecf22039045f6960226bda42
6 files changed