#2 Clients can stop connection without triggering restart attempt.

Potential approach for issue #2. The diff looks a bit muddled, but basically I pulled all of the event handlers out in to actual methods rather than lambdas, which are then subscribed to in `Initialize()` and unsubscribed from in `Stop()`. It is probably easier to look at the raw file than the diff for review purposes.