Refactor the replies waiter code
Refactor the replies waiter code

This changes improves the way of we wait for replies.
Currently, one of the rpc client is reponsible to poll the amqp connection
used for replies and passed received answers to the correct client.

In this way, we have some case if no client is waiting for a reply, the
connection is not polled and no IO are done on the wire. The direct
effect of that is we don't detect if the tcp connection is broken,
from the system point of view, the tcp connection stay alive even if someone
between the client and server have closed the connection.

This change refactors the replies waiter code by creating a background
thread responsible to poll the connection instead of a random client.
The connection lost will be detect as soon as possible even if no rpc
client are currently used the connection.

This is a mandatory change to be able to enable heartbeat on this
connection.

Related-Bug: #1371723
Related-Bug: #856764

Change-Id: I82d4029dd897ef13ae8ba3cda84a2fe65c8c91d2

stevei101/oslo.messaging,zhurongze/oslo.messaging,apporc/oslo.messaging,dims/oslo.messaging,zhurongze/oslo.messaging,apporc/oslo.messaging,magic0704/oslo.messaging,hkumarmk/oslo.messaging,dukhlov/oslo.messaging,isyippee/oslo.messaging,magic0704/oslo.messaging,isyippee/oslo.messaging,stevei101/oslo.messaging,hkumarmk/oslo.messaging,ozamiatin/oslo.messaging,ozamiatin/oslo.messaging,dims/oslo.messaging,dukhlov/oslo.messaging