agent: Fix use after free in CockpitDBusJson

This would occur when the CockpitDBusJson was closed while
servicing some dbus calls.

Closes #564
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
common: Ignore zero byte data blocks in cockpit_pipe_write()

It doesn't make sense to write zero bytes to a stream, and
the logic in dispatch_output() isn't ready for it.

Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
ws: Clear input data POSTed to web server before freeing

This data may contain passwords and such.

Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
ws: No threading or blocking in CockpitAuth

To do this we treat login separately from loading cookies. This was
already the case, but we make it clearer.

Actual PAM authentication happens in cockpit-session, so we simply
get notified when it completes and then complete the async login
web response.

There's room to make this cleaner, but will wait until we get GSSAPI
authentication in the mix before refactoring it further.

Closes #557
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
Cleanup the G_LOG_DOMAINS we use especially for debugging

 * cockpit-protocol: low level stuff, very busy repetetive messages
   produced by both cockpit-ws and cockpit-agent processes
 * cockpit-ws: web service higher level
 * WebSocket: the web socket code (separate from cockpit)
 * cockpit-agent: the agent specific code

You'll likely need to 'make clean' after applying this patch.

Closes #569
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
test: Remove *.pyc files when doing 'make clean'

git can confuse python, which checks the last modified date
of the pyc file.

Closes #570
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
ws: Remove some useless rhost stuff in CockpitWebService
ws: Only share sessions if channel uses normal user/key

If a channel requests a specific user or host key, then force a
new session/agent for that channel.
ws: Test that a session without channel times out

This only happens after all channels have been closed. Refactor
things a bit to make testing easier.
ws: No need for tracking the connection in CockpitWebService

Not used for anything any longer. Removing this also fixes
a leak.
ws: Handle multiple WebSockets per CockpitWebService

Multiple web sockets can be served from a single CockpitWebService,
which allows tabs to share sessions, as well as coherent implementations
of /logout and resource handlers.
ws: CockpitAuth owns CockpitWebService instances

Each time a real login occurs, we instantiate a new CockpitWebService
and return that same instance when logging in with cookies.

When doing /logout we dispose that web service instance, and force
it to disconnect.

Fixes #495
Closes #565