Raise an error on Client#connect after #close

The IO reactor can't be restarted, so a client cannot be reconnected either. This gives the user a better error message, and simplifies the connection logic since it doesn't have to consider that the client can be in a closing state when #connect is called.

This closes #37