YouShould(Not)AlwaysCallDispose - reverting dispoing websockets on the server

AspNetWebsocket uncoditionally throws a NotSupportedException from the Dispose() method, so #ifdefing the invocation so that we only call Dispose on the client.
Support using inherited interfaces in Hub<T>

#3311