tubes: Allow aggregating/splitting pumps.

And also split makeTube() into its own file.