DontDieInTheStore - handling exceptions in receive in websocket store transport

If an exception happened while reading a message using the websocket store transport we would not handle. As a result it would be bubbled up and would crash the user's app. The user have no way of catching this exception. The fix is to catch exceptions and report them to the user using the IConnection.Error and to close the websocket to enable reconnect logic.

Workitem #3313
Removed await from RedisMessageBus.Send

- The await would cause an unnecessary SyncContext.Post that would prevent
  the returned Task from completing if there was a thread blocked on the
  returned Task while holding the SyncConetext.

#3240
Update Client.Store platform moniker to portable-win81+wpa81

- Previously, when I tried installing the client package into a universal app,
  only the phone project got the additional dll with WebSocket support.
CloseIsNotDispose - make sure the websocket is disposed after closing
Remove unused onFailedTimeoutHandle from the JS client
Fix poll redirection test to account for failures while connecting
Fix foreverFrame test to account for failures prior to timeout
Avoid an uncaught TypeError which can stop the entire QUnit test suite

- If the WebSocket transport failed to connect, an uncaught type error
  would be thrown from the modified
Remove setTimeout from JS test

- Previously, even the minimum timeout would take so long the connection
  would successfully start before the timeout fired.
Remove WebSocket prototype from mock WebSocket

- Safari 7.1+ complains if you use a non-WebSocket object sharing the
  WebSocket prototype. https://github.com/HubSpot/pace/issues/173
Use ThreadPool for method to connect Redis to avoid conneciton start hang