Added Keep Alive Feature for .NET client and tests

- Added the Keep Alive class for storing timeout values
- Added HeartbeatMonitor to fire timeouts and timeout warnings
- Added Timeout and Timeout Warning events to Connection
- Added unit and functional tests
Added the HeartbeatMonitor and KeepAliveData classes to the Silverlight project
- Removed the timer code from the WinRT project

- Fixed a syntax error in WinRT.csproj
Made changes in 'using' statements as per code review feedback
Added an using statement for Timer in HeartbeatMonitor
Changes made as per code review feedback
Added the SupportsKeepAlive property to the various transports
Added KeepAliveData and HeartBeatMonitor files to the WP8 project
Made changes to the KeepAlive feature as per code review feedback

- Added a SuccessiveTimeoutTest to test the case when the connection times out successively
- Added constructors to the KeepAliveData class
#741
Used an Interlocked Exchange variable to prevent a race condition in the disposing of the timer
Fixed the Interlocked Exchange variable implementation for disposing the timer
Fixed the null exception that was occurring because KeepAliveData wasn't being checked before starting the HeartBeatMonitor.