Switch to httpuv package; more robust file uploads

This change removes the dependency on the websockets package and replaces it with httpuv. The latter has more robust HTTP parsing and can handle POST requests. As a result, the file upload code can be much faster and more robust: rather than passing the binary data in chunks over the websocket connection (which didn't work with Shiny Server anyway) we are now able to POST the file.