ws: Only one code path for starting local cockpit-session process

Don't automatically launch local cockpit-session processes when
opening channels. The only way to get one is via a /login.

This simplifies the authentication code, but more importantly
once GSSAPI is implemented, we won't necessarily have the credentials
to just launch a cockpit-session whenever we want.

Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
ws: Log the user out when the primary session goes away

If the primary session goes away (eg: via a kill command or crash)
then log the user out of the web service all together.

Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
ws: Move cockpit-session code to src/ws/ directory

It's really part of the webservice code rather than the agent, and the
API that cockpit-ws and cockpit-session talk is pretty tightly bound.

Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
common: When JSON data to parse is empty, raise an error

Explicitly raise an error when JSON data to parse is empty.
This was causing issues when empty data would come from cockpit-session.

Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
ws: In preparation for GSSAPI move authentication to headers

Use the standard Authorization header and Basic auth for authenticating
via passwords.

We parse the authorization header in cockpit-session, similarly to how
we'll be doing for the GSSAPI (ie: kerberos auth)

Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
ws: Pass headers to CockpitAuth login_finish() virtual method

In our GSSAPI authentication we'll be adding custom headers from
the implementations of this virtual method.

Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
ws: Remove support from CockpitWebServer for handling POST reqs

This is no longer used or needed. Conceptually we should never be
handling POST requests because we have no CSRF protection, or anything like
that anyway.

Anything that changes state should go through thet WebSocket.

Closes #1114
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
test: Adapt check-multi-machine.

Killing the "admin" session on m1 now results in a log out, so the
test uses m2 and m3 instead.