CFSocket

@Lejdborg can you review the code? Do you approve the changes?

The only advantage of using CFSocket is in the connection method, the code is a lot more clean (and maybe CFSocketConnectToAddress is more optimized than the previous connection code).

The other changes are:
- Using the channel in blocking mode when possible made the code more clean (no more EAGAIN error checking)
- The new channelShellDidClose: delegate method can be used to disconnect the session
- NMSSHChannel now use a dispatch_source instead of a dispatch_queue to read from the buffer when the channel is in shell mode. dispatch_source handler is called only when the socket has data available
- Host resolution using CFHost (and IPv6 support)