use asyncore and asynchat, instead of the messy multiprocessing that was done before.  add a simple example client.