simplification of SocketApender connection logic

This pull request aims to simplify the connection logic of the SocketAppender by doing the following:

* not spawning an additional connector thread, since the logic is already running on another thread
* holding the SocketConnector as a member to avoid unnecessary instantiation of that factory
* not querying the interrupted flag of the thread in the connection loop anymore but instead making the presence of a socket the loop condition (the SocketConnector only returns null if it was interrupted while trying to create a Socket)

In addition a few more unit tests were added to cover use-cases which have been refactored with this pull request.
@SierraGolf, this line is somehow causing intermittent test failures in Travis. Can you please take a look? Thanks

https://travis-ci.org/qos-ch/logback/builds/45309744#L3074
https://travis-ci.org/qos-ch/logback/builds/45310947#L3094
```
addsInfoMessageWhenSocketConnectionClosed(ch.qos.logback.core.net.AbstractSocketAppenderTest)  Time elapsed: 0.035 sec  <<< ERROR!
org.mockito.exceptions.misusing.UnfinishedStubbingException: 
Unfinished stubbing detected here:
-> at ch.qos.logback.core.net.AbstractSocketAppenderTest.breakOutSocketReConnectionLoop(AbstractSocketAppenderTest.java:473)
E.g. thenReturn() may be missing.
Examples of correct stubbing:
    when(mock.isOk()).thenReturn(true);
    when(mock.isOk()).thenThrow(exception);
    doThrow(exception).when(mock).someVoidMethod();
Hints:
 1. missing thenReturn()
 2. you are trying to stub a final method, you naughty developer!
	at ch.qos.logback.core.net.AbstractSocketAppenderTest.breakOutSocketReConnectionLoop(AbstractSocketAppenderTest.java:473)
```