Modified KeepAlive to utilize a LastMessageAt property.

- Also modified existing tests that relied on the LastKeepAlive property to now rely on LastMessageAt.
- LastMessageAt can now be used by LongPolling for message monitoring purposes.
Added a ReconnectWindow to the connection object.

- ReconnectWindows are used to ensure that connections do not attempt to reconnect after extended periods of time.
Added a default beat interval for the HeartbeatMonitor in the situations where KeepAlive is disabled on the server.

- Also fixed some tests to properly return transports with valid SupportsKeepAlive values.

Initialize the lastActiveAt flag to ensure that there's no race between a transport start and the flag set.

- This is to ensure we don't pre-emptively close connections on reconnect.
Added a test to verify that ReconnectWindows work appropriately.

Fixed tests to abide by new heartbeat timer and the last message at value.

Fixed some more keep alive fact tests since the heartbeat monitor now requires to be started before beat works for keep alive.