I am using `nullIf` in aggregations to skip unwanted empty strings. Strangely enough `any` function picks `NULL`s resulting from `nullIf`, i.e. does skip them as it should do with NULLs.

### Minimal reproducing code
```sql
select any(nullIf('', ''), 'some text');
```
produces:
```
┌─nullIf('', '')─┐
│ ᴺᵁᴸᴸ           │
└────────────────┘
```

**Expected behavior**
This should return 'Some text'

### Other example with table
```sql
create temporary table vv (m Nullable(String));
insert into vv (*) values (''), ('Some text');
select any(nullIf(m, '')) from vv;
```
result:
```
┌─nullIf(any(m), '')─┐
│ ᴺᵁᴸᴸ               │
└────────────────────┘
```
expecting 'Some text' as before
/// We have rewritten this function. Just unwrap its argument.
    if (data.rewritten.count(ast.get()))
    {
        func_arguments[0]->setAlias(func.alias);
        ast = func_arguments[0];
        return;
    }
    std::unordered_set<ASTPtr *> identifiers; /// implicit remove duplicates
    if (!extractIdentifiers(func, identifiers))
        return;
    /// Wrap identifiers: any(f(x, y, g(z))) -> any(f(any(x), any(y), g(any(z))))
    for (auto * ast_to_change : identifiers)
    {
        ASTPtr e;
        *ast_to_change = makeASTFunction(func.name);
        (*ast_t);
    }
    data.rewritten.insert(ast.get());
    /// Unwrap function: any(f(any(x), any(y), g(any(z)))) -> f(any(x), any(y), g(any(z)))
    func_arguments[0]->setAlias(func.alias);
    ast = func_arguments[0];
}
bool RewriteAnyFunctionMatcher::needChildVisit(const ASTPtr & node, const ASTPtr &)
{
    return !node->as<ASTSubquery>() &&
        !node->as<ASTTableExpression>() &&
        !node->as<ASTArrayJoin>();
}
}