!fixme cluster: exit only on unexpected disconnect

Workers shouldn't normally exit on disconnect, it doesn't give them time
to do a graceful finish of open client connections. But on unexpected
disconnect they should exit so the workes aren't left around after the
master.
!FIXME cluster: don't error because of a disconnect

Its not an error for the worker to disconnect itself. This fix isn't
complete, its possible that some of the callbacks will need to be
called, or incomplete operations in the worker will never complete.
Various fixes