Modularize tools

This change delivers on the promise of being able to define tools without forking the project.