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.