chat: Introduce valid channel to publisher and reimplement publisher
so that calls are truly async.

This uncovered quite a few tests that were passing just because the
old publisher was semi-synchronous when it used an unbuffered chan.

Also introduce PublisherState to the PublisherStatus(formerly Mounts).

Fixes vanadium/issues#1148

MultiPart: 4/4

Change-Id: I18133fe36d0aad56d46c840edd11332ef8422755
diff --git a/clients/shell/go/src/v.io/x/chat/channel.go b/clients/shell/go/src/v.io/x/chat/channel.go
index 5a94a01..5e4fbb6 100644
--- a/clients/shell/go/src/v.io/x/chat/channel.go
+++ b/clients/shell/go/src/v.io/x/chat/channel.go
@@ -221,7 +221,7 @@
 	cr.server.Stop()
 
 	// Get the names we are mounted at.  Should only be one.
-	names := cr.server.Status().Mounts.Names()
+	names := rpc.PublisherNames(cr.server.Status().PublisherStatus)
 	// Delete the name and all sub-names in the hierarchy.
 	ns := v23.GetNamespace(cr.ctx)
 	for _, name := range names {