virtio: gpu: add QueueReader trait to consume a queue
virtio: gpu: add QueueReader trait to consume a queue

There are two implementations:

 * SharedQueueReader: Thread-safe (protected with a mutex)
 * LocalQueueReader: Not thread-safe

Signed-off-by: Louis-Francis Ratté-Boulianne <5dfb82032f62281844037b0b6ec34fda6f320758@collabora.com>
Change-Id: I9ac746660e666fde81f3b5e2909422fd8922c43e
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2845983
Tested-by: kokoro <2ac7b1f3fa578934c95181d4272be0d3bca00121@google.com>
Commit-Queue: Gurchetan Singh <99434bba058e25b6203b8ae055a4f697dad0ef64@chromium.org>
Reviewed-by: Daniel Verkamp <72bc170b46ec491f7bdd4359a1c0bfed274de40c@chromium.org>
Reviewed-by: Chirantan Ekbote <35787c0e27de5c48735e07f8324823b765e8bcbc@chromium.org>

google/crosvm,google/crosvm,google/crosvm,google/crosvm