Start the consumer.  This starts a listen loop on a zmq.PULL socket,
        calling ``self.handle`` on each incoming request and pushing the response
        on a zmq.PUSH socket back to the producer.

def start(self):
        """Start the consumer.  This starts a listen loop on a zmq.PULL socket,
        calling ``self.handle`` on each incoming request and pushing the response
        on a zmq.PUSH socket back to the producer."""
        if not self.initialized:
            raise Exception("Consumer not initialized (no Producer).")
        producer = self.producer
        context = zmq._Context()
        self.pull = context.socket(zmq.PULL)
        self.push = context.socket(zmq.PUSH)
        self.pull.connect('tcp://%s:%s' % (producer.host, producer.push_port))
        self.push.connect('tcp://%s:%s' % (producer.host, producer.pull_port))
        # TODO: notify the producer that this consumer's ready for work?
        self.listen()