base: Allow cockpit.format() to accept variable argument lists

These are simpler than constructing an array of arguments.

Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
shell: Switch to cockpit.format() for string formatting

Closes #1512
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
shell: Don't poll docker containers and images via REST

Instead watch /var/lib/docker for changes, and use that to augment
the somewhat flakey REST /events stream.

Closes #1520
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
ws: Don't timeout the primary user session even when no channels

Even when there are no channels open, we should never timeout
the primary user session which is tracking the user's login.

Sometimes this is a local session (via cockpit-session) and sometimes
this is via ssh (see --local-ssh).

Closes #1530
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
ws, shell: Any control message with a channel is forwarded

In order to provide for future extensibility, any control message
with a channel is forwarded.

Control messages without a channel are generally single hop,
although some specific ones like "logout" are rebroadcast to
all bridges.

Closes #1533
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
ws: Send more "capabilities" in case we need to remove them

Send "ssh" and "multi" capabilities so that the shell can react
when we need to compile without this feature on RHEL 6 or
elsewhere.

Closes #1534
Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>