Use BlockBuffering on socket handle

This improves pipelining performance. Without BlockBuffering, the handle
defaults to `NoBuffering`, and every `hPut` is immediately digested, i.e.
the `hFlush` in the `unsafeInterleaveIO` section never actually does
anything.

The benchmark program shows an average of 378969.8 pings per second
without this patch, and 629792.5 pings per second with it (both averages
over three runs).

I chose 4096 arbitrarily. We must determine an appropriate value.