Clean up: Refactoring the Cycle dependency checking code from Engine::addDependency into Engine::isReachable
Clean up: Replacing the Magic Numbers INPUT_MODULE_ID and OUTPUT_MODULE_ID with enum IOModules { InputModuleId , OutputModuleId };