Merge branch 'release/2.2.1-2014.2'
Attempt to switch the entire library to use asyncio/trollius instead
of eventlet.

This only updates the library and test, not the documentation.  It
hasn't been tested against an actual gazebo server either yet, just
the unit test.
Switch the publish interface to accept a callback rather than return a
Future, to make the interface entirely callback based.
Update README to current API and fix enough bugs such that it can
perform basic publishing to an actual server.
Try to fix all logging statements.
Get the tests to a passing state again by mocking up a new socket method.
Start the process of converting from callbacks to futures in Event.
More converting callbacks to futures, this time in Publisher.
More replacing callbacks with futures, here Connection.connect.
Thread more futures through, this time in Connection.read.
Make a new module level "connect" method, which returns a Future and
reports errors properly.
Now thread Futures through writing.
Improve unit tests:
 * Empty out the event loop after each test.
 * Add a test case to handle receiving data which was subscribed.

At this point, we have coverage over everything but error handling.
Bump version up to 2.2.1-2014.3.
Fix a few minor bugs:
 * If no one is listening, still mark the publish future as complete.
 * In a few cases, raise an exception then catch it, so that we are in
   an "exception context" and sys.exc_info works.
 * When creating a publisher, return a future which is set after the
   advertise request is actually sent over the wire.
Remove eventlet from requirements lists, as it is no longer a dependency.
Properly report publish writes as completed, even if there are
multiple listening connections.

You can't directly capture the loop variable into a closure in python.
Also, we were erroneously passing an additional argument to
asyncio.Future's constructor when sub-classing it.
Update documentation to match new APIs.