CA1063: Implement IDisposable Correctly

The WebSocket type Dispose method had default access of internal which prevents a consuming type owning a WebSocket instance from correctly implementing IDisposable. 

WebSocket also owns a System.Threading.Timer instance that is not disposed, and does not implement an object finalizer according to the .NET framework recommendations for cleaning up unmanaged resources. Additionally JsonWebSocket does not implement IDisposable despite owning a WebSocket instance.