[C++] Split CommandEvaluator from Executor

This is the first step of --ninja support
7 files changed