Classes in Tools.h inherit ultimately from Tool, possibly via GnuTool.
The problem: "Assemble", "Compile", etc are verbs, whereas "Tool" is a noun (and "Link" is both, but in this context, a verb).
Had the classes been named for their command-line (literally ld, etc), this would be rational in that ld is a tool per se.
But they're not- they're named by the conceptual tool's operation.
With the patch, a constructor call - formerly "Compile(args...)" - loses the deceptive appearance of doing that at the time of call and is more symmetric with the factory invocation, e.g. BuildLinker() returns a "new namespace::Linker(...)", not "new namespace::Link(...)".
Exceptions: Clang and ClangAs are un-renamed. Those are their rightful names. And there is no particulary great way to name the "Lipo-er" and a few others.
Above you renamed "gcc::Preprocess" to "gcc::Preprocessor", but here (and almost everywhere else in my spot check) the text names were left alone.
I'm not actually sure which is right. These seem like documentation or logging generation strings, so maybe they should all be updated?