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
Moved keep alive data from prototype to an instance member.

- This way multiple connections do not share keep alive data.
Modified keep alive to utilize the lastMessageAt property.

- Removed the lastKeepAlive member from the keep alive data since it was essentially the same as the lastMessageAt property.

#2484
Modified tests to work with the new functionality of keep alive.

- I also removed several tests that no longer apply as valid tests due to the keep alive functionality changes.

#2484
Moved KeepAliveData into the private _ member.
Reduced the ConnectionTimeout to be equivalent to the DisconnectTimeout.

- This allows us to know when a client has been gone from a server for too long.  Prime example is mobile devices when they go into sleep mode.

#2484
Addressed code review comments.