introduce the gaffer websocket client

A gaffer websocket cllient allows you to connect to gaffer using a websocket
and then bind to events/streams/stats or send command to gaffer.

Ex:

    # get a gaffer socket from the server
    socket = server.socket()
    socket.start()

    # subscribe to socket to the EVENTS topic (all gaffer events)
    socket.subscribe("EVENTS")

    # bind to all events from the EVENTS topic
    def cb(event, data):
        print(data)

    socket['EVENTS'].bind_all(cb)

    # subscribe to only `start` event:
    socket['EVENT'].bind('start', cb)