client now has methods that allow caller to get the registered event list, and event callback which makes it possible to have a reconnecting connection pool. connection pool now requires the use of a callback which constructs the client instead of passing in client pointers to add_client