refactor ExternalSender to have a `done` channel per swap
the `ExternalSender` type used for the UI should have a per-swap channel that is closed when he swap exits, and this channel should be used by the websockets handler for the `signer_subscribe` function