**Describe the bug**
Can't insert negative values into `Map(Int8, Int8)` column either as keys or values.
The same when trying to insert negative values into `Map(Int8, Int16)`, `Map(Int8, Int32)` or `Map(Int8, Int64)`.
Similar problem when trying to insert negative keys into `Map(Int16, Int8)`, `Map(Int32, Int8)` or `Map(Int64, Int8)`.
 
```
Feb 21,2021 7:49:40         ⟥  Example Int8
                                  Check what values we can insert into map type column with value integer.
                                  Requirements
                                    RQ.SRS-018.ClickHouse.Map.DataType.Value.Integer
                                      version 1.0
                                  Arguments
                                    type
                                      Map(Int8, Int8)
                                    data
                                      ('2020-01-01', map(1,127,2,0,3,-128))
                                    output
                                      {"d":"2020-01-01","m":{1:127,2:0,3:-128}}
 Feb 21,2021 7:49:40           ⟥  Given table definition with Map(Int8, Int8), flags:MANDATORY
               302us           ⟥⟤ OK table definition with Map(Int8, Int8), /map type/tests/table map with value integer/Int8/table definition with Map(Int8, Int8)
 Feb 21,2021 7:49:40           ⟥  And I create a table, flags:MANDATORY
                                    CREATE TABLE {name} (d DATE, m Map(Int8, Int8)) ENGINE = MergeTree() PARTITION BY m ORDER BY d
 Feb 21,2021 7:49:40             ⟥  And I have a table_map_with_value_integer_43276a40_7443_11eb_869f_096b24b409b0 table, flags:MANDATORY
 Feb 21,2021 7:49:40               ⟥  By executing command
                                        echo -e "CREATE TABLE table_map_with_value_integer_43276a40_7443_11eb_869f_096b24b409b0 (d DATE, m Map(Int8, Int8)) ENGINE = MergeTree() PARTITION BY m ORDER BY d" | clickhouse client -n --allow_experimental_map_type "1"
                 3ms                    [clickhouse1] bash# echo -e "CREATE TABLE table_map_with_value_integer_43276a40_7443_11eb_869f_096b24b409b0 (d DATE, m Map(Int8, Int8)) ENGINE = MergeTree() PARTITION BY m ORDER BY d" | clickhouse client -n --allow_experimental_map_type "1"
                41ms                    [clickhouse1] bash# echo $?
                41ms                    [clickhouse1] 0
                42ms                    [clickhouse1] bash#
                42ms               ⟥⟤ OK executing command, /map type/tests/table map with value integer/Int8/I create a table/I have a table_map_with_value_integer_43276a40_7443_11eb_869f_096b24b409b0 table/executing command
 Feb 21,2021 7:49:40               ⟥  Then check if output has exception
               829us               ⟥⟤ OK check if output has exception, /map type/tests/table map with value integer/Int8/I create a table/I have a table_map_with_value_integer_43276a40_7443_11eb_869f_096b24b409b0 table/check if output has exception
                44ms             ⟥⟤ OK I have a table_map_with_value_integer_43276a40_7443_11eb_869f_096b24b409b0 table, /map type/tests/table map with value integer/Int8/I create a table/I have a table_map_with_value_integer_43276a40_7443_11eb_869f_096b24b409b0 table
                44ms           ⟥⟤ OK I create a table, /map type/tests/table map with value integer/Int8/I create a table
 Feb 21,2021 7:49:40           ⟥  When I insert data
                                    ('2020-01-01', map(1,127,2,0,3,-128))
 Feb 21,2021 7:49:40             ⟥  By executing command
                                      echo -e "INSERT INTO table_map_with_value_integer_43276a40_7443_11eb_869f_096b24b409b0 VALUES ('2020-01-01', map(1,127,2,0,3,-128))" | clickhouse client -n --allow_experimental_map_type "1"
                 5ms                  [clickhouse1] bash# echo -e "INSERT INTO table_map_with_value_integer_43276a40_7443_11eb_869f_096b24b409b0 VALUES ('2020-01-01', map(1,127,2,0,3,-128))" | clickhouse client -n --allow_experimental_map_type "1"
                50ms                  [clickhouse1] Error on processing query 'INSERT INTO table_map_with_value_integer_43276a40_7443_11eb_869f_096b24b409b0 VALUES ('2020-01-01', map(1,127,2,0,3,-128))':
                51ms                  [clickhouse1] Code: 53, e.displayText() = DB::Exception: Type mismatch in IN or VALUES section. Expected: Map(Int8,Int8). Got: Map: data for INSERT was parsed from query, Stack trace (when copying this message, always include the lines below):
                51ms                  [clickhouse1] 
                51ms                  [clickhouse1] 0. ? @ 0xef62fae in /usr/bin/clickhouse
                51ms                  [clickhouse1] 1. DB::convertFieldToType(DB::Field const&, DB::IDataType const&, DB::IDataType const*) @ 0xef61d24 in /usr/bin/clickhouse
                51ms                  [clickhouse1] 2. DB::ValuesBlockInputFormat::parseExpression(DB::IColumn&, unsigned long) @ 0xf7f274b in /usr/bin/clickhouse
                51ms                  [clickhouse1] 3. DB::ValuesBlockInputFormat::readRow(std::__1::vector<COW<DB::IColumn>::mutable_ptr<DB::IColumn>, std::__1::allocator<COW<DB::IColumn>::mutable_ptr<DB::IColumn> > >&, unsigned long) @ 0xf7f0398 in /usr/bin/clickhouse
                51ms                  [clickhouse1] 4. DB::ValuesBlockInputFormat::generate() @ 0xf7ef73c in /usr/bin/clickhouse
                51ms                  [clickhouse1] 5. DB::ISource::tryGenerate() @ 0xf6df1b5 in /usr/bin/clickhouse
                51ms                  [clickhouse1] 6. DB::ISource::work() @ 0xf6deeca in /usr/bin/clickhouse
                51ms                  [clickhouse1] 7. DB::InputStreamFromInputFormat::readImpl() @ 0xce6517f in /usr/bin/clickhouse
                51ms                  [clickhouse1] 8. DB::IBlockInputStream::read() @ 0xe710385 in /usr/bin/clickhouse
                51ms                  [clickhouse1] 9. DB::AsynchronousBlockInputStream::calculate() @ 0xe70c701 in /usr/bin/clickhouse
                51ms                  [clickhouse1] 10. ? @ 0xe70cf77 in /usr/bin/clickhouse
                51ms                  [clickhouse1] 11. ThreadPoolImpl<ThreadFromGlobalPool>::worker(std::__1::__list_iterator<ThreadFromGlobalPool, void*>) @ 0x8528a48 in /usr/bin/clickhouse
                52ms                  [clickhouse1] 12. ThreadFromGlobalPool::ThreadFromGlobalPool<void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()>(void&&, void ThreadPoolImpl<ThreadFromGlobalPool>::scheduleImpl<void>(std::__1::function<void ()>, int, std::__1::optional<unsigned long>)::'lambda1'()&&...)::'lambda'()::operator()() @ 0x852a9ff in /usr/bin/clickhouse
                52ms                  [clickhouse1] 13. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x852601f in /usr/bin/clickhouse
                52ms                  [clickhouse1] 14. ? @ 0x8529ab3 in /usr/bin/clickhouse
                52ms                  [clickhouse1] 15. start_thread @ 0x9609 in /usr/lib/x86_64-linux-gnu/libpthread-2.31.so
                52ms                  [clickhouse1] 16. clone @ 0x122293 in /usr/lib/x86_64-linux-gnu/libc-2.31.so
                52ms                  [clickhouse1]  (version 21.3.1.5944 (official build))
                56ms                  [clickhouse1] bash# echo $?
                56ms                  [clickhouse1] 53
                57ms                  [clickhouse1] bash#
```

**Expected behavior**
It should work.

{
    auto field = from.get<DecimalField<From>>();
    T value = convertDecimals<DataTypeDecimal<From>, DataTypeDecimal<T>>(field.getValue(), field.getScale(), type.getScale());
    return DecimalField<T>(value, type.getScale());
}
template <typename To>
static Field convertDecimalType(const Field & from, const To & type)
{
    if (from.getType() == Field::Types::UInt64)
        return convertIntToDecimalType<UInt64>(from, type);
    if (from.getType() == Field::Types::Int64)
        return convertIntToDecimalType<Int64>(from, type);
    if (from.getType() == Field::Types::String)
        return convertStringToDecimalType(from, type);
    if (from.getType() == Field::Types::Decimal32)
        return convertDecimalToDecimalType<Decimal32>(from, type);
    if (from.getType() == Field::Types::Decimal64)
        return convertDecimalToDecimalType<Decimal64>(from, type);
    if (from.getType() == Field::Types::Decimal128)
        return convertDecimalToDecimalType<Decimal128>(from, type);
    throw Exception("Type mismatch in IN or VALUES section. Expected: " + type.getName() + ". Got: "
        + Field::Types::toString(from.getType()), ErrorCodes::TYPE_MISMATCH);
}
Field convertFieldToTypeImpl(const Field & src, const IDataType & type, const IDataType * from_type_hint)
{