restructure source input stream/ stream source

down stream use cases need to be able to avoid some of the mess
that is source input stream. it frequently isn't even used like
an InputStream, just a little wrapper over a queue. This change
makes those uses slightly less intertwined.