Add more TLS protocols to rabbit impl

Python 2.7.9 added PROTOCOL_TLSv1_1 and PROTOCOL_TLSv1_2, so these
are added to the allowed kombu_ssl_version values.

See https://docs.python.org/2/library/ssl.html#ssl.PROTOCOL_TLSv1_1

Change-Id: I1dd590d916ab524284a941db91b9cb81fd4639bb
Fix reconnect race condition with RabbitMQ cluster

Retry Queue creation to workaround race condition
that may happen when both the client and broker race over
exchange creation and deletion respectively which happen only
when the Queue/Exchange were created with auto-delete flag.

Queues/Exchange declared with auto-delete instruct the Broker to
delete the Queue when the last Consumer disconnect from it, and
the Exchange when the last Queue is deleted from this Exchange.

Now in a RabbitMQ cluster setup, if the cluster node that we are
connected to go down, 2 things will happen:

 1. From RabbitMQ side, the Queues w/ auto-delete will be deleted
    from the other cluster nodes and then the Exchanges that the
    Queues are bind to if they were also created w/ auto-delete.
 2. From client side, client will reconnect to another cluster
    node and call queue.declare() which  create Exchanges then
    Queues then Binding in that order.

Now in a happy path the queues/exchanges will be deleted from the
broker before client start re-creating them again, but it also
possible that the client first start by creating queues/exchange
as part of the queue.declare() call, which are no-op operations
b/c they alreay existed, but before it could bind Queue to
Exchange, RabbitMQ nodes just received the 'signal' that the
queue doesn't have any consumer so it should be delete, and the
same with exchanges, which will lead to binding fail with
NotFound error.

Illustration of the time line from Client and RabbitMQ cluster
respectively when the race condition happen:

       e-declare(E)      q-declare(Q)       q-bind(Q, E)
     -----+------------------+----------------+----------->
                               e-delete(E)
     ------------------------------+---------------------->

Change-Id: Ideb73af6f246a8282780cdb204d675d5d4555bf0
Closes-Bug: #1318721
Warn user if needed when the process is forked

This change warns the library consumer when the process if forked and
we can't be sure that the library work as expected.

This also add some documentation about forking oslo.messaging Transport
object.

Change-Id: I2938421775aa72866adac198d70214856d45e165
Related-bug: #1330199
Reintroduces fake_rabbit config option

This change reintroduces the fake_rabbit only for backward compatibility,
but mark it as deprecated.

Now, to use the kombu in-memory driver (that is not thread safe) we must
set the transport_url config option to 'kombu+memory:////" or the
rpc_backend to kombu+memory.

Or we can use the fake driver of oslo.messaging by setting the
transport_url to 'fake:///' or the rpc_backend to 'fake'

This is effectively reverting commit bcb3b23b8f6e7d01e38fdc031982558711bb7586.

Closes-bug: #1399085

Change-Id: I7b6fb3811fc6f695f75ecd350e04e69afd26c428
Merge "Fix reconnect race condition with RabbitMQ cluster"
Touch up grammar in warning messages

Change-Id: I556e6e646417be3732a7c31987ec964f9808f079
Merge "Warn user if needed when the process is forked"
Merge "Add more TLS protocols to rabbit impl"
Workflow documentation is now in infra-manual

Replace URLs for workflow documentation to appropriate parts of the
OpenStack Project Infrastructure Manual.

Change-Id: I1ba19377ed279ccb9f8d698b15678c528cbeade3
Merge "Touch up grammar in warning messages"
Merge "Workflow documentation is now in infra-manual"