implement optional queueing for rospy publications (#169)

Specifying the maximum queue size when creating a publisher (https://github.com/ros/ros_comm/blob/69fb651de8f547c7d48d57ea9cc7c78a492d77d9/clients/rospy/src/rospy/topics.py#L742) will make all `publish() calls being handled asynchronously. The functionality is implemented as an non-default option in order to not change the default behavior.

There are several side effects to this change:
* changing the internal behavior to asynchronous IO will expose error cases only after a repeated `publish()` call to the user code (since they don't happen immediately but asynchronously)
* this implementation will actually start dropping messages on the publisher side if the queue size is exceeded which is not the case for the current/default blocking API
* user land code needs to be updated in order to leverage the new functionality (e.g. in order to address issues like in #169)

@tfoote @wjwwood Please review.