03057367

By: Greg Pfeil <greg@technomadic.org>

zcash_client_backend: Add `decryptor::Handle::{closed, is_closed}`

The queuing methods cannot report whether the engine is alive. `send` is a
permit acquisition followed by an infallible push, so a request that acquires
its permit concurrently with the engine's drop is still queued, and `None`
never comes. Nothing drains that request either: the receiver's drop only
drains what was already queued, and the channel itself is freed when the last
`Handle` goes, so the request's `on_complete` outlives the engine and its
receiver resolves neither way.

Callers therefore had no way to distinguish "queued" from "queued into a
channel nobody will read", and awaiting such a receiver parks forever.
Delegate to the underlying sender, which reports receiver liveness directly.