close
Cancel the owning scope — stops all voter coroutines — then, when this mesh ownsSeams, gracefully close each internally-owned Seam.
The order is deliberate: cancel scope first so the voter RaftNodes stop driving the seams, then close the seams. Closing the seams sends the fabric's close frames (e.g. a WebSocket close), so peers drop this voter from their roster cleanly instead of holding a zombie — an in-process close() that left the inter-server sessions ESTABLISHED and still answering pings, so peers kept the dead voter in-roster indefinitely. The per-seam close is best-effort (a try/catch per seam) and runs under NonCancellable so a cancelled caller context still completes the cleanup (mirrors the formation-failure teardown in voterMeshOverWebSockets).
When ownsSeams is false (the test path, or caller-owned seams via the public voterMeshOverSeams) this only cancels scope — the caller owns the seams' lifecycles.
suspend because Seam.close is a suspend function: graceful shutdown must await the close frames rather than fire-and-forget.