**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)
```

const IColumn * start_col, const IColumn * end_col, const IColumn * step_col, const size_t input_rows_count) const
    {
        auto start_column = checkAndGetColumn<ColumnVector<T>>(start_col);
        auto end_column = checkAndGetColumn<ColumnVector<T>>(end_col);
        auto step_column = checkAndGetColumn<ColumnVector<T>>(step_col);
        if (!start_column || !end_column || !step_column)
            return nullptr;
        const auto & start_data = start_column->getData();
        const auto & end_start = end_column->getData();
        const auto & step_data = step_column->getData();
        size_t total_values = 0;
        size_t pre_values = 0;
        for (size_t row_idx = 0; row_idx < input_rows_count; ++row_idx)
        {
            if (start_data[row_idx] < end_start[row_idx] && step_data[row_idx] == 0)
                throw Exception{"A call to function " + getName() + " overflows, the 3rd argument step can't be zero",
                            ErrorCodes::ARGUMENT_OUT_OF_BOUND};
            pre_values += start_data[row_idx] >= end_start[row_idx] ? 0
                            : (end_start[row_idx] -start_data[row_idx] - 1) / (step_data[row_idx]) + 1;
            if (pre_values < total_values)
                throw Exception{"A call to function " + getName() + " overflows, investigate the values of arguments you are passing",
                            ErrorCodes::ARGUMENT_OUT_OF_BOUND};
            total_values = pre_values;
            if (total_values > max_elements)
                throw Exception{"A call to function " + getName() + " would produce " + std::to_string(total_values) +