Send ACKs to the connection waiting on the ACK not the acker itself

- These ACKs are used to verify that commands published to the
  bus have been received and processed (e.g. group commands).
- Previously, ACKs only succeeded if the waiter and acker were on
  the same machine and/or the acker happened to be the waiter.

#3037
Stop processing messages before ending the WebSocketFunc Task

- This should prevent ObjectDisposedExceptions from WindowsIdentity
  in OnDisconnected
Added test to verify that WindowsIdentities are usable in OnDisconnected