ff_socket: put out-of-line and fallback to fcntl() for close-on-exec

This supports non-Linux systems (SOCK_CLOEXEC is non-standard) and
older Linux kernels to the extent possible.

Signed-off-by: Martin Storsjö <martin@martin.st>