Development code for Sockets provider

- This is an incremental devel code for Sockets provider.

We can optimize our access to the fd by tracking whether there is an outstanding read against the fd.  I.e. once we've written to the fd once, we don't need to write again until the fd has been read.  This can avoid a kernel transition and overhead of accessing the fd.