Fix a race condition in RPCClient

If RPCClient.request() is invoked with wait_for_response set to True, it will create a condition
variable for the request, send the request over the socket, and then wait on the condition
variable until the response arrives.  The response is handled in a separate thread by RPCClient.Request.dispatch(),
which calls notifyAll() on the condition variable.  If the dispatch thread calls notifyAll() before
RPCClient.request() starts waiting on the condition variable, that wait call will hang indefinitely
(or for the timeout if timeout is specified).