Add a setKeepAlive() function for TCP connections.
Use a boolean as parameter for setNonBlocking() function.

Use the POSIX method to set or unset non blocking state on Unix-like
systems.
Removing Close() call in destructor.

The issue is that the destructor is called when copying and then
reassigning the object. There is still a valid copy of the object left
in invalid state.

The use of shared_ptr could help to synchronize the state of the object
and the socket contained.
Merged for testing and fixed some things
Merge pull request 'catageek-AddKeepAlive' into develop
Keepalive options on Windows
Merge branch 'develop'