Remove unused eventlet/greenlet from qpid/rabbit

Because driver should rely on executor and not directly on eventlet,
delete eventlet/greenlet related code.

qpid/rabbit part.

Change-Id: I20a0850d54b6c6f81957beabb12f7d67f0c1e741
Fix UnboundLocalError error

This change corrects the UnboundLocalError exception that
can occur if something bad happens on reconnect to RabbitMQ

Closes-Bug: #1272271

Change-Id: I9e157810caa7a45e9a61ec571cfe9024fabacf93
Use stevedore's make_test_instance

Replace the use of TestManager with make_test_instance
to get an instance of the type of manager expected.
The old TestManager class is deprecated

Change-Id: I717c0296bf8ae07b1dad8f0045bfe12c8620ad0a
Partial-bug: #1273455
Merge "Use stevedore's make_test_instance"
Merge "Fix UnboundLocalError error"
Merge "Remove unused eventlet/greenlet from qpid/rabbit"
Merge "Allow fake driver to consume multiple topics"
Merge "Make the dispatcher responsible to listen()"
Implements notification listener and dispatcher

This patch allows to quickly create a listener to receive
notification messages.

Example of the api:

class Endpoint(object):
    def warn(self, ctxt, publisher_id, event_type, payload):
        do_something(payload)

target = messaging.Target(topic='notifications', exchange='cinder')
listener = notify.get_notification_listener(transport, [target],
                                            [Endpoint()],
                                            executor,
                                            serializer)

Implements blueprint notification-subscriber-server

Change-Id: I434bc487c382a2048670df726d9bebd640150bb9
Abstract the acknowledge layer of a message

The patch add ta abstraction layer to acknowledge a message.

Partial implements blueprint notification-subscriber-server

Change-Id: I6e37780cc28737cfd56b6719ec8d9cebbc9bb278
Don't reply to notification message

The notification listener doesn't have anything to send to the notifier
and the notifier doesn't attend to receive something.

So this patch remove the message reply when the listener is a notification
listener.

Partial implements blueprint notification-subscriber-server

Change-Id: Ic989947ba3b6894cde788422842fca19159ea261
Make the executor responsible of the message ack

This patch make the executor responsible of the message
acknowledgement.

This is the preliminar step to be able to requeue message.

Partial implements blueprint notification-subscriber-server

Change-Id: If74b47d5e23976d407deb27df7395b1982963c75
Allow to requeue the notification message

This patch allow to requeue the notification received by the
notification listener.

Partial implements blueprint notification-subscriber-server

Change-Id: I49c4ba91224c280e479edb19289ccb337a2ab843
Add multiple exchange per listerner in fake driver

This patch allow the FakeListener to listen on multiple FakeExchange.

Partial implements blueprint notification-subscriber-server

Change-Id: I9830cc01efdd931f6628853f7e84b947d7b855c9
asyncio poc

Change-Id: I46c016e43b47932d5933dabb80d605c0114e9b9d
Add a new asynchronous executor based on Trollius

The executor runs the asyncio event loop in a dedicated thread. It is possible
to specify an asyncio event loop to avoid this thread. For example, it is
possible to use the greenio module to create an event loop running in greenlet,
and so run the asyncio event loop in the main thread. The callback and
incoming.reply() are executed in the same thread than the event loop.

The changeset is still a work-in-progress, I only tested a blocking listener
(driver "fake"). I didn't find how to stop the listener and my test program
doesn't stop because of unknown threads which are blocking at Python exit
(maybe threads from the fake driver?).

incoming.reply() can be called in a pool of thread, but this feature is
currently disabled (until I fix the stop issue).

The changeset implements the asyncio blueprint:
https://wiki.openstack.org/wiki/Oslo/blueprints/asyncio

Trollius is a port on Python 2 of the new asyncio module of Python 3.4 which is
also known as the Tulip project (written for Python 3.3 and later).
Documentation of the asyncio module:
http://docs.python.org/dev/library/asyncio.html

Change-Id: I3815673aad35c560d7e7df2fa2a6601a1bbfb773
Implements: blueprint asyncio

Conflicts:
	setup.cfg
add ack/requeue to trollius executor

Change-Id: I45f8779dca1ef1fce8fce591899e9d044db9b1b1