forward-port draft76 websockets

from tornado-3.2.2

only enabled during testing with phantomjs
don't pin tornado<4 on travis
bump minimum tornado version to 4.0

remove various websocket workaround for tornado 3