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.
session: Rename 'passwd' to 'password' for clarity

In the cases we're dealing with an actual password instead
of a struct passwd, use the full word 'password'
session: Lookup user info earlier and use it consistently

Lookup user info via getpwnam() right after authenticating and
use it consistently as the full user name, etc.
session: Lookup the user's full name in session

This can be a blocking operation, don't look it up in
cockpit-ws where we can't be blocking waiting for an
LDAP server or something like that.
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