ws: Don't complain if SSH connection already closed when writing

When closing an SSH connection, don't complain if it's already
closed. libssh returns SSH_REQUEST_DENIED in this case.

This happens when the remote has closed but libssh hasn't let us
know yet. We assume that the notification will come soon.
ws: Send a 'channel-seed' in the WebSocket init message

This allows various web sockets to generate unique channels, without
having to get into NAT'ing everything in CockpitWebService.

This is necessary once various frames are the source of channels.
They'll need to be seeded appropriately so that they pick unique
channel ids.

The way that channels get their id, also needs to change a bit.
The id can't be allocated until the transport is open. So queueing
of messages happens at the channel level now.
ws: Send user info in the 'init' control channel message

Rather than filling in the user into the index page environment,
send it in the 'init' control message, along with the cockpit
setup info.

The index page will be changing, and this is much cleaner.

Closes #1332