2513 - Added a ReconnectWindow to verify client is active.

- The client now has a generic heartbeat that is used to check keep alives and to update a last active time stamp.
- Ultimately the lastActiveAt flag allows us to know if the client was running code to detect things like mobile devices going to sleep and then trying to reconnect long after they would have already been disconnected.

#2513