Add can_send_version() to RPCClient

Add a helper method to the RPCClient class.  This is a little nicer to
use for checking to see if a given message is copmatible with the set
version cap.

This can be used in a bunch of different ways:

  client = RPCClient(version_cap='1.6', version='1.0')
  client.can_send_version()
  client.can_send_version(version='1.6')

  client = client.prepare(version_cap='1.8', version='1.5')
  client.can_send_version()
  client.can_send_version(version='1.2')

Co-authored-by: Russell Bryant <rbryant@redhat.com>
Knock off a few TODOs
Don't translate exception messages
Fix some pep8 issues
Use log.warning() instead of log.warn()

warn() is provided by ContextAdapter, there's no reason to use it.
Fix fake driver with eventlet

By storing the reply_q on the listener, we were assuming there was only
one message being dispatched at the time. Put it on the incoming message
instead and use it directly in reply().
Update example scripts for recent API changes
Don't use common logging

It appears we don't actually need this - we don't, for example, use any
of the special formatting supported by ContextAdaptor.
Move url utils into messaging._urls
Fix parse_urls() buglets

When you expect split() to return 2 values, make sure to tell it to only
do a single split.
Unit tests for URL parsing code
Make exchange_from_url() use parse_url()