Initial framework

Change-Id: I183a6fd41a1971158f237bc94666818fcb136765
Co-authored-by: Doug Hellmann <doug.hellmann@dreamhost.com>
Co-authored-by: Flaper Fesp <flaper87@gmail.com>
Implement a fake driver

A bunch of FIXMEs in here, but it seems like a good start.

Note that this differs from the original fake driver. Rather than the
driver consuming each message in a greenthread, we leave it up to the
choice of executor to determine how the consumer is run in parallel to
the client and we use thread-safe queues to pass the messages and
replies back and forth. The main reason for this is that we don't want
the driver explicitly depending on eventlet.

Change-Id: Id52e12be93c95b779695f62411f02f43d8480e4e
Add some test code

Right so ... it seems this stuff basically works!

Change-Id: I3c575ae9364e280e7523bc3856e5d6f1948826ad