Add initial rabbit driver

There's obviously an awful lot of work left to do on this. Some 20
FIXMEs, for a start :)

However, the test client can successfully invoke a call() and get a
reply back from the server!

The main complexity is in how the client waits for a reply, especially
where there are multiple threads all waiting for replies. Rather than
follow the current method of spawning off a greenthread (and the implied
dependency on eventlet) to read the replies and pass them to the queue
for the appropriate waiting thread, we instead have one of the waiting
threads take on that responsibility.

Change-Id: I20d3d66a5cc9820752e7eaebd8871ffb235d31c9