Refactor disconnection handling by extracting to a new class that could
potentially be re-used outside of the diagnostics app.

I wanted to limit the dependencies to just the PTPusher instance and
Reachability, so I've kept logging outside of the class by using a
delegate to notify of significant events and leaving the logging in
the view controller.