Add accessors for getting the server and connections file descriptors

This adds accessors for reading the TCP servers and queued TCP
sockets file descriptors. This allows using the file descriptors
to "reload" a server without dropping connections.
Allow building a DatTCP server from file descriptors

This allows both creating the TCP server from a file descriptor
and passing in client socket file descriptors and having those
loaded onto the worker pool. With this a server process can hand
off it's TCP server and client socket file descriptors to another
process, essentially to pick up where it left off. This is to
support a "hot restart" when using a DatTCP server.
Cleanups

* Added exception when the args passed to listen are not a file
  descriptor or ip and port. To help out with valid args and not
  getting other strange errors.
* `listen` has to be called before `run`, will throw an exception
  if not. This is to be explicit and not hide the 'listening' or
  have to manage passing args through to it.
* Renamed `graceful_shutdown` to `shutdown_worker_pool`. This is
  to be clear about the purpose of the method, to shutdown the
  worker pool not the server.