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.