Due to a whole bunch of things, ranging from authentication handling to the websocket implementations, the library could end up getting stuck in a state where it would loop infinitely. This PR should fix this behavior by doing the following changes.
Reworked the reading, writing and notifying of credential changes.
Reworked the TwitchAuthService, also exposing the authenticated state using a newly introduced internal eventhandler
Changed the WebSocket library to WebsocketClientLite.PCL. This is still based on System.Reactive, but gives a bit more control over our connection.
Reworked the eventhandlers of the WebSocketProvider to be async
Added a connection locker to the StartInternal method of the Twitch IRC service due to in rare circumstances, we would end up with a race condition where the eventhandlers got subscribed twice anyways.
Due to a whole bunch of things, ranging from authentication handling to the websocket implementations, the library could end up getting stuck in a state where it would loop infinitely. This PR should fix this behavior by doing the following changes.