LOGBACK-350 Prevent SocketNode constructor blocking due to lack of data from client

The constructor creates an ObjectInputStream, and this blocks until the stream
header is received from the client.

If the client doesn't send a stream header, construction of the SocketNode will
hang, preventing SimpleSocketServer from accepting new clients.

This change moves the construction of the ObjectInputStream into
SocketNode.run. As SimpleSocketServer runs this method in a new thread, a rogue
client won't prevent subsequent ones being able to connect.
Mark SocketNode as closed if ObjectInputStream can't be created

This prevents a NullPointerException from being thrown, and allows the
socketNodeClosing method to be called for the SocketNode.
Merge pull request #155 from richardfearn/LOGBACK-350

LOGBACK-350 Prevent SocketNode constructor blocking due to lack of data from client