Updates to Python DDP client.

- Implement version handshake.

- Use a condition variable instead of sleep(0).

- Don't crash on 'added' with no fields.

- Include 'reason' when connection is closed.

- If our code throws an exception, make sure to print it before killing the main
  thread.

- Don't print a KeyboardInterrupt traceback on Ctrl-C or
  kill-due-to-connection-close. (ie, don't print two tracebacks if the thread
  throws.)