Bullet-proofed the socket code

You could call .setState on an unsubscribed socket. Not what we wanted!
Now subscribe is called if a socket isn't subscribed and you try to call
a subscribe-only function.