Major overhaul of client connection logic

- Remove PooledClient
- Add reconnect functionality to client
- Add 'idle' client event and options