Make AMQP based RPC consumer threads more robust

This is a backport from oslo-incubator,
commit 22ec8ff616a799085239e3e529daeeefea6366c4:

bug 1189711 Should RPC consume_in_thread() be more fault tolerant?

There are unprotected holes in the thread kicked off by RPC
consume_in_thread such that an exception will kill the thread.
This exists for both the service (TopicConsumer) and the new
reply proxy (DirectConsumer) consumers. This patch plugs
those holes as close to the base of the consumer thread as
possible by catching all non-caught exceptions and retrying
with sleeps between retries and some pacing of the log
output to prevent log flooding.

Change-Id: Ic7b286933a51d070e73eae452b93f8a011eb05c0
Merge "Make AMQP based RPC consumer threads more robust" into stable/grizzly