Rewrote the connection / reconnection logic for better reliability

Reachability was not working correctly, and NSLogger could lose the connection to the viewer and never attempt it again.

This new version takes over the previous logic. Reachability is the master that determines whether we attempt connection. Network transitions (network on/off, network type switch i.e. WiFi->3G) trigger a manual disconnection (required due to CoreFoundation not notifying us) and a reconnection attempt.

This mechanism has been tested in various scenarious but only with Bonjour logging, not with direct hosts. Please make sure to report any inconsistency or regression.