StreamOutput: printf calls virtual puts so we can reduce code reuse elsewhere

StreamOutputPool: ditch printf, implement puts which distributes to each Stream's puts