**Describe what's wrong**

It's not possible to initialize aggregation function from nullable types.

**Does it reproduce on recent release?**

Yes, 
ClickHouse version 21.10

```
SELECT initializeAggregation('uniqExactState', toNullable(''))


0 rows in set. Elapsed: 0.003 sec.

Received exception from server (version 21.10.1):
Code: 43. DB::Exception: Received from localhost:9000. DB::Exception: Nested type AggregateFunction(uniqExact, String) cannot be inside Nullable type: While processing initializeAggregation('uniqExactState', toNullable('')). (ILLEGAL_TYPE_OF_ARGUMENT)


SELECT initializeAggregation('uniqExactState', toNullable(1))


Received exception from server (version 21.10.1):
Code: 43. DB::Exception: Received from localhost:9000. DB::Exception: Nested type AggregateFunction(uniqExact, UInt8) cannot be inside Nullable type: While processing initializeAggregation('uniqExactState', toNullable(1)). (ILLEGAL_TYPE_OF_ARGUMENT)
```


**Expected behavior**

It should be possible to initialize aggregation function from nullable types.


**Additional context**

WA

```
SELECT arrayReduce('uniqExactState', [toNullable('')])

Query id: 29fc6760-78be-4f28-be5f-f1bbe12f04fc

┌─arrayReduce('uniqExactState', array(toNullable('')))─┐
│ 2���V���嵶����                                                │
└──────────────────────────────────────────────────────┘
```

{
public:
    static constexpr auto name = "initializeAggregation";
    static FunctionPtr create(ContextPtr context_) { return std::make_shared<FunctionInitializeAggregation>(context_); }
    explicit FunctionInitializeAggregation(ContextPtr context_) : WithContext(context_) {}
    String getName() const override { return name; }
    bool isVariadic() const override { return true; }
    size_t getNumberOfArguments() const override { return 0; }
    bool isSuitableForShortCircuitArgumentsExecution(const DataTypesWithConstInfo & ) const override { return true; }
    bool useDefaultImplementationForConstants() const override { return true; }
    ColumnNumbers getArgumentsThatAreAlwaysConstant() const override { return {0}; }
    DataTypePtr getReturnTypeImpl(const ColumnsWithTypeAndName & arguments) const override;
    ColumnPtr executeImpl(const ColumnsWithTypeAndName & arguments, const DataTypePtr & result_type, size_t input_rows_count) const override;
private:
    
    mutable AggregateFunctionPtr aggregate_function;
};
DataTypePtr FunctionInitializeAggregation::getReturnTypeImpl(const ColumnsWithTypeAndName & arguments) const