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

columns_holder[2] = castColumn(
                {DataTypeUInt8().createColumnConst(input_rows_count, 1), std::make_shared<DataTypeUInt8>(), {}},
                elem_type);
            column_ptrs[2] = columns_holder[2].get();
        }
        bool is_start_const = isColumnConst(*column_ptrs[0]);
        bool is_step_const = isColumnConst(*column_ptrs[2]);
        if (is_start_const && is_step_const)
        {
            UInt64 start = assert_cast<const ColumnConst &>(*column_ptrs[0]).getUInt(0);
            UInt64 step = assert_cast<const ColumnConst &>(*column_ptrs[2]).getUInt(0);
            if ((res = executeConstStartStep<UInt8>(column_ptrs[1], start, step, input_rows_count)) ||
                (res = executeConstStartStep<UInt16>(column_ptrs[1], start, step, input_rows_count)) ||
                (res = executeConstStartStep<UInt32>(column_ptrs[1], static_cast<UInt32>(start), static_cast<UInt32>(step), input_rows_count)) ||
                (res = executeConstStartStep<UInt64>(column_ptrs[1], start, step, input_rows_count)))
            {
            }
        }
        else if (is_start_const && !is_step_const)
        {
            UInt64 start = assert_cast<const ColumnConst &>(*column_ptrs[0]).getUInt(0);
            if ((res = executeConstStart<UInt8>(column_ptrs[1], column_ptrs[2], start, input_rows_count)) ||
                (res = executeConstStart<UInt16>(column_ptrs[1], column_ptrs[2], start, input_rows_count)) ||
                (res = executeConstStart<UInt32>(column_ptrs[1], column_ptrs[2], static_cast<UInt32>(start), input_rows_count)) ||
                (res = executeConstStart<UInt64>(column_ptrs[1], column_ptrs[2], start, input_rows_count)))
            {
            }
        }
        else if (!is_start_const && is_step_const)
        {