Add functionality for authenticating with CentralServer

This adds quite a lot of stuff needed for authenticating.
The public API function,  Connection.authenticate, is functional.

There were several hurdles along the way. One noteable one is that wx must be
called in it's own thread. Both wx and reactor are event loops that need their
own thread. Long story short, reactor never calls the user's callbacks; reactor
adds the callbacks to a stack which is then called by wx.

TODO:

add a timeout to connection that responds to the user after.. a sec or so
if there is no response from the server. Right now it just keeps on waiting if
the server doesn't respond.

start the central server from main.py or move it next to main.py

handle the other public connection functions

I forgot about commiting last night, my bad. This should have been broken up
into several commits.