Decay client to persist session across non-concurrent connections

This will allow a single session to exists between page reloads/navigation, client disconnect-reconnect, etc.

The behaviour is:

* Client is closed
* Decay timeout begins for N seconds (default 30)
* After decay, client is removed from connection pool
* Subscriptions are removed for client if and only if no other connections exist for that client id