refactor(server): simplify drain (#2328)
refactor(server): simplify drain (#2328)

The current implementation of `drain` uses a `tokio::sync::watch`
channel to send the shutdown signal, and a `tokio::sync::mpsc` to signal
when all draining tasks have completed. No data is ever actually sent on
the MPSC; instead, it is simply used to notify the task that signalled
the drain when all draining tasks have been dropped.

Tokio 0.3's `watch::Sender` has a `closed` method that can be used to
await the dropping of all receivers. This can be used instead of the
MPSC channel. This commit updates `drain` to use `watch::Sender::closed`
instead. This has fewer moving parts, and may have slightly less
overhead (as it doesn't require additional allocation forthe MPSC which
is never actually used).

Signed-off-by: Eliza Weisman <f43a79dfd42415a8656f99967c2caaf66ded84db@buoyant.io>
hyperium/hyper,hyperium/hyper,tshepang/hyper,tshepang/hyper,tshepang/hyper,hyperium/hyper