SingleSourceStream and MultiSourceStream are now templated so setSource() etc provides fluent interface