Moves all of the "source" and "tool" implementations into their own packages. This layout makes it a bit more clear where the implementations are, and seems likely to scale more cleanly as more sources and tools are added.