common: Tweak test output a bit

For more visibility in CI. Also remove unnecessary init
from test-pipe.c
agent: Implement text-stream channel with spawn argument

This launches a process and connects the channel to the standard
input and standard output of the spawned process. Standard error
goes to the same output as the agent's unless redirected.

The command is not passed to the shell, it should be a full
executable path.

The doc/protocol.md documentation has some details on how
to call this.
common: Properly handle case where pipe closing both in/out

When pipe is asked to close output, but not a socket and the
input file descriptor is equal to the output fd, then we have
to close both. This means we stop reading input as well.

Previously this case would cause a critical warning and reading
from an invalid file descriptor.
cockpit: Implement cockpit_pipe_pty() function

This opens up a pipe with a pty provided by forkpty() and lets
us communicate with that pty.
agent: Implement pty option for CockpitTextStream

This lets us open a pty by specifying 'pty': true in the channel
options.
web: Implement a proper terminal on rescue terminal page

Use a proper terminal from term.js on the terminal page.

Fixes #434
Cloles #472