ws: remove calls to recvMalloc

Remove the calls to `recvMalloc` in favour of using the (patched) `recv`
from the original nanomsg library, which shouldn't segfault anymore. The
reason for using `recv` are a few, but mostly the fact that `recv` can
allocated arbitrary-long payloads data (up to the 1MB limit) without an
hardcoded limit like `recvMalloc` was imposing. Furthermore, `recv` does
resource cleanup for us via `c_nn_freemsg`, whereas `recvMalloc` is not
thread/exception safe. Consider the implementation:

```
recvMalloc :: Receiver a => Socket a -> Int -> IO ByteString
recvMalloc (Socket t sid) numBytes = do
  ptr <- mallocBytes numBytes
  -- receive by blocking the thread
  len <- c_nn_recv sid ptr (#const NN_MSG) 0 -- (#const NN_DONTWAIT)
  str <- C.packCStringLen (castPtr ptr, fromIntegral len)
  free ptr
  return str
```

If any exception (synchronous or asynchronous) strikes _before_ the call
to `free`, we would be leaking C memory.
4 jobs for adinapoli/issue-392 in 12 minutes and 40 seconds (queued for 1 second)
Status Job ID Name Coverage
  Cabal
failed #14560
cabal

00:12:40

 
  Stack
skipped #14561
stack
 
  Bench
skipped #14562
allowed to fail manual
bench
 
  Test
skipped #14563
test
 
Name Stage Failure
failed
cabal Cabal
+ actual_cabal_project_freeze_hash=50f3ccea242400c48bd9cec7286bd07c8223c87c043e09576dd5fef0949f982a
+ [[ 336fd2c2c001e0a13d828fd8ccc14bae7d62ca392539433f522ef9987109c6cb != 500b0d7b6c0b95937096a27c9a21fcaeeb6c0933d6f0db5e2ead9e69fa25b63f ]]
ERROR! hash mismatch between expected cabal.project and the one computed by cabal2stack.
Please update the hashes inside the './bin/update-project-dependencies' file.
+ echo -e '\e[31mERROR! hash mismatch between expected cabal.project and the one computed by cabal2stack.\e[0m'
+ echo -e '\e[33mPlease update the hashes inside the '\''./bin/update-project-dependencies'\'' file.\e[0m'
+ exit 1
Cleaning up project directory and file based variables
ERROR: Job failed: exit code 1