Pubsub changes and docs

I was finding occasional deadlocks and interleaved reads with the pubsub implementation. This PR seems to fix it. Here is a program that would always deadlock before but works with this patch:

````
#lang racket
(require "./main.rkt" racket/async-channel)

(define pool (make-connection-pool))
(define pubsubconn (lease-pubsub-conn pool))
(redis-connection? pubsubconn)
(pubsub-connection? pubsubconn)
(define foo-chan (make-subscribe-chan pubsubconn 'foo pool))
(sleep .1)
(define bar-chan (make-subscribe-chan pubsubconn 'bar pool))
(PUBLISH 'foo "Hello")
(PUBLISH 'bar "World!")

(async-channel-get foo-chan)
(async-channel-get bar-chan)
````

I also did some work on the docs and added an info.rkt file for the package system.
At this point, would it be faster to just disconnect-and-reconnect rather than have such a complicated cleanup process? Have you ever looked at the implementation of other redis clients? I wonder what they do?