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.
Hmm, redis errors if `DISCARD` is called without a prior `MULTI`. Also, if there was a prior `MULTI`, then the `UNSUBSCRIBE`s will get queued instead of executed.

So I think our cleanup logic needs to be even more complicated. Here's my proposal. Let me know what you think:

1. Issue dummy command
2. if `QUEUED` then call `DISCARD`
3. else there was no prior `MULTI`, so we can proceed with the `UNSUBSCRIBE`ing like we're doing now.