changed Source to accept streams and urls, and added initial BenchTool code