Implement more Addrinfo-related logic throughout socket ext.

* Addrinfo.getaddrinfo
* Socket and ServerSocket binds that take Addrinfo
* Correct logic for SO and SOL constants in BasicSocket
* ServerSocket for listens in socket.rb

Conflicts:
	core/src/main/java/org/jruby/ext/socket/RubySocket.java
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.

Conflicts:
	core/src/main/java/org/jruby/ext/socket/RubyBasicSocket.java
Return 0 to Socket.getaddrinfo when 2nd arg is nil