Implement IDisposable Correctly

WebSocket Dispose method had default access level of internal.

As a result, any consuming class owning a WebSocket instance cannot
correctly implement IDisposable.

Implemented IDisposable on WebSocket and JsonWebSocket disposing the
client connection, and additionally disposed System.Threading.Timer
instance m_WebSocketTimer which also implements IDisposable.

Should now allow disposal from owning classes and clear up any "CA1063:
Implement IDisposable correctly" Code Analysis warnings.