**Describe the issue**
Allow to call `range()` with Int* data types.
Validate that arguments are positive.

**How to reproduce**
```
SELECT range(CAST('1', 'Int8'), CAST('10', 'Int8'))

Query id: 8710056b-08d9-454d-bb6a-e858b61dc9a3


0 rows in set. Elapsed: 0.081 sec.

Received exception from server (version 22.11.1):
Code: 43. DB::Exception: Received from localhost:9000. DB::Exception: Illegal type Int8 of argument of function range: In scope SELECT range(CAST('1', 'Int8'), CAST('10', 'Int8')). (ILLEGAL_TYPE_OF_ARGUMENT)
```

throw Exception{"Illegal columns of arguments of function " + getName()
                + ", the function only implemented for unsigned integers up to 64 bit", ErrorCodes::ILLEGAL_COLUMN};
        }
        ColumnPtr res;
        if (arguments.size() == 1)
        {
            const auto * col = arguments[0].column.get();
            if (!((res = executeInternal<UInt8>(col))
                || (res = executeInternal<UInt16>(col))
                || (res = executeInternal<UInt32>(col))
                || (res = executeInternal<UInt64>(col))))
            {
                throw Exception{"Illegal column " + col->getName() + " of argument of function " + getName(), ErrorCodes::ILLEGAL_COLUMN};
            }
            return res;
        }
        Columns columns_holder(3);
        ColumnRawPtrs column_ptrs(3);
        for (size_t i = 0; i < arguments.size(); ++i)
        {
            if (i == 1)
                columns_holder[i] = castColumn(arguments[i], elem_type)->convertToFullColumnIfConst();
            else
                columns_holder[i] = castColumn(arguments[i], elem_type);
            column_ptrs[i] = columns_holder[i].get();
        }
        
        if (arguments.size() == 2)
        {