**Feature**

Allow creating empty dictionaries with DDL queries.

**Use case**

This feature will allow building queries and views referencing empty dictionary with `dictGet` or 'as a table', 
even if dictionary does not exist yet.

Maybe, empty dictionaries does not make sense in 'clickhouse as a part of internal infrastructure', this will 
feature may be useful in cases when clickhouse is used as a database for small application that configures
clickhouse automatically, and some dictionaries may be optional or provided by application  user.

**Describe the solution you'd like**

Provide mock source `SOURCE(EMPTY())` for dictionaries, such that every `dictGet` call will return `null_value`.

**Describe alternatives you've considered**

Make source section optional for dictionaries.

{
        auto & source_factory = DictionarySourceFactory::instance();
        registerDictionarySourceFile(source_factory);
        registerDictionarySourceMysql(source_factory);
        registerDictionarySourceClickHouse(source_factory);
        registerDictionarySourceMongoDB(source_factory);
        registerDictionarySourceRedis(source_factory);
        registerDictionarySourceCassandra(source_factory);
        registerDictionarySourceXDBC(source_factory);
        registerDictionarySourceJDBC(source_factory);
        registerDictionarySourcePostgreSQL(source_factory);
        registerDictionarySourceExecutable(source_factory);
        registerDictionarySourceExecutablePool(source_factory);
        registerDictionarySourceHTTP(source_factory);
        registerDictionarySourceLibrary(source_factory);
    }
    {
        auto & factory = DictionaryFactory::instance();
        registerDictionaryRangeHashed(factory);
        registerDictionaryTrie(factory);
        registerDictionaryFlat(factory);
        registerDictionaryHashed(factory);
        registerDictionaryArrayHashed(factory);
        registerDictionaryCache(factory);
        registerDictionaryPolygon(factory);
        registerDictionaryDirect(factory);
    }
}
}