cockpit: Don't close sessions that receive for unknown channels

When a channel closes from the session side (eg: due to an error)
then cockpit-web can't possibly know it shouldn't send a message
to that channel until it receives the close message.

There's a race where a channel closes just before a message that
was already in transit gets delivered to it.

Currently we cause a failure in the transport due to a message
with an unknown channel. However this is inherently racy and breaks
the entire application (ie: logout).

We have to just ignore messages with bad channels in this situation.

Note that we still don't allow sessions to lie about which channels
they're sending messages from. This would be a security risk, and
is still handled strictly (by closing the session).

Closes #477