Implement BasicSocket.for_fd and related fixes.

* for_fd consumes the given fileno/descriptor and initializes the
  type of socket for_fd is called against (TCPServer, etc).
* RubyTCPServer no longer keeps a separate reference to the server
  channel nor the address, to allow for_fd initialization.
* ChannelDescriptor will now also not decrement the reference
  count during finish logic unless close is specified. With the
  old logic, non-closing finish would still produce an error on
  future non-closing finish when it should do nothing at all.