Add a command that will freeze clickhouse-server process with STOP signal and wakeup it after specified amount of time.
This is needed for testing (fault injection).

Wakeup can be done with `ShellCommand` running `sleep N && kill -CONT pid`
{
    std::vector<StorageID> replica_names;
    auto & catalog = DatabaseCatalog::instance();
    for (auto & elem : catalog.getDatabases())
    {
        DatabasePtr & database = elem.second;
        for (auto iterator = database->getTablesIterator(context); iterator->isValid(); iterator->next())
        {
            if (auto table = iterator->table())
            {
                if (dynamic_cast<const StorageReplicatedMergeTree *>(table.get()))
                    replica_names.emplace_back(StorageID{iterator->databaseName(), iterator->name()});
            }
        }
    }
    if (replica_names.empty())
        return;
    TableGuards guards;
    for (const auto & name : replica_names)
        guards.emplace(UniqueTableName{name.database_name, name.table_name}, nullptr);
    for (auto & guard : guards)
        guard.second = catalog.getDDLGuard(guard.first.database_name, guard.first.table_name);
    ThreadPool pool(std::min(size_t(getNumberOfPhysicalCPUCores()), replica_names.size()));
    for (auto & table : replica_names)
        pool.scheduleOrThrowOnError([&]() { tryRestartReplica(table, system_context, false); });
    pool.wait();
}
void InterpreterSystemQuery::dropReplica(ASTSystemQuery & query)