tornado websockets (gevent optional)

ripping out websockets into tornado, for more compatibility, and for ability to run multiple server processes
I think this is not py3 compatible, you can use six here IIRC...