base: Channel objects have a .binary field

This is a boolean, and allows callers to easily see what format the
messages are expected to be in.

Reviewed-by: Marius Vollmer <marius.vollmer@redhat.com>
base: Cleanup streaming functionality

This affects stuff like the cockpit.spawn() process promises, and also
things like the upcoming http-stream1 code.

Make proc.input(data, stream) more explicit, where you have to pass
true for the stream argument so that the input remains open.

Allow only one proc.stream(callback) handler, if another one is
registered it replaces the first.

The stream handlers can now return a number, which indicates how
many bytes or characters were consumed from the data.

Update documentation.

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