Proof of concept richer interface for pubsub
Remove unnecessary module scoping
Rethink the way pubsub is handled

Rather than have another layer for pubsub, decided to remove
the pubsub code and complexity from the standard Client, and
created a separate Pubsub client with a richer interface
Fix bug where initial subscriptions would be sent twice

This didn't actually cause any issues, but it's just unecessary
Emit extra pubsub events: subscribe unsubscribe psubscribe punsubscribe

* It's still also possible to use the deferrable from subscribe, unsubscribe etc. which succeeds when the subscription succeeds
* Internally allows us to optimise resubscription on reconnect to use a single redis call
Added an example of using the new pubsub interface
Some initial tests for pubsub
Change (p)(un)subscribe df callback to only return count

* The other parameters (event and subscription key) are useless in this context
Specs for pubsub unsubscribe
Specs for pubsub raw messages and reconnect handling
Change unsubscribe_proc to return a deferrable

* Also fixes a bug and adds specs for last callback case
Implement pattern pubsub with an idential API to normal pubsub
Merge branch 'richer_pubsub' into experimental
Rename Client to BaseClient, and extend from Base
Fix typo
Refactored info & monitor out of BaseClient
Use redis db 9 for tests (it calls flushall!)
Emit disconnected and reconnect_failed events
Fail the redis client after 4 failed connection attempts
Fail new redis operations immediately when in failed state