Added a reconnect window through which reconnects ensure that a time threshold has not been passed.

- Tracked time stamps on connections every time they receive a message.
- When attempting to reconnect check the last message time stamp.

#2484
Added a test to verify that reconnecting transitions into the disconnected state if the reconnecting threshold exceeds the reconnectWindow.

#2484