Keep client WebSocket connections alive using Network.WebSockets.forkPingThread

This is in response to several issues regarding websocket connections being dropped.

Original feature support in websockets library: https://github.com/jaspervdj/websockets/commit/536849d1f3265076f61edefd5c89e84e82a99c71

https://github.com/jaspervdj/websockets/issues/83

https://github.com/yesodweb/yesod/issues/823


This is only the initial implementation but I wanted to put up the PR to get feedback on how to get this supported.